Nginx 负载均衡配置实践
当单台应用服务器无法承载全部请求时,可以使用 Nginx 将流量分发到多个后端节点。Nginx 的 upstream 模块提供了简单可靠的负载均衡能力,适合中小规模业务的入口层部署。
一、基础 upstream 配置
upstream app_servers {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
server 10.0.0.13:8080;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://app_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
默认情况下,Nginx 使用轮询方式将请求分发给多个节点。
二、权重分配
如果不同服务器配置不同,可以通过 weight 参数控制流量比例:
upstream app_servers {
server 10.0.0.11:8080 weight=3;
server 10.0.0.12:8080 weight=1;
}
上面的配置中,第一台服务器大约承担三倍于第二台服务器的请求量。
三、故障处理与备用节点
可以使用 max_fails 和 fail_timeout 控制失败判定,也可以设置备用节点:
upstream app_servers {
server 10.0.0.11:8080 max_fails=3 fail_timeout=30s;
server 10.0.0.12:8080 max_fails=3 fail_timeout=30s;
server 10.0.0.99:8080 backup;
}
当主节点不可用时,backup 节点才会参与请求处理。
四、简单灰度发布思路
灰度发布可以通过较低权重将少量流量导入新版本服务:
upstream app_servers {
server 10.0.0.11:8080 weight=9; # 稳定版本
server 10.0.0.12:8080 weight=1; # 新版本
}
观察新版本日志和业务指标稳定后,再逐步提高权重。
五、实践建议
- 后端服务应提供健康检查接口,便于监控系统判断状态。
- 应用要尽量无状态,避免会话绑定到单台机器。
- 变更 upstream 配置后,使用
nginx -t检查并平滑重载。 - 结合访问日志统计各节点流量,确认分发比例符合预期。