nginx在centos上的负载均衡策略
导读:Nginx 在 CentOS 上的负载均衡策略与配置 一 常用策略与适用场景 轮询 Round Robin(默认):依次分发请求,适合后端性能接近、无会话粘滞的场景。 加权轮询 Weighted Round Robin:通过 weight...
Nginx 在 CentOS 上的负载均衡策略与配置
一 常用策略与适用场景
- 轮询 Round Robin(默认):依次分发请求,适合后端性能接近、无会话粘滞的场景。
- 加权轮询 Weighted Round Robin:通过 weight 控制比例,适合性能不均的服务器组。
- 最少连接 Least Connections:优先分配给当前连接数最少的节点,适合请求处理时长差异较大的场景。
- IP 哈希 ip_hash:按客户端 IP 计算哈希,使同一客户端固定到同一后端,用于简易会话保持。
- 通用哈希 hash:可按指定变量(如 $request_uri)做一致性哈希,适合缓存、按 URL 固定后端的场景。
- 随机 Random(含 consistent 参数):随机分发,配合一致性哈希可减少缓存抖动。
- 第三方模块:fair(按响应时间分配)、url_hash(按 URL 哈希,常见于缓存代理);需额外编译模块。
以上策略均为 Nginx 常见内置或可扩展方式,具体可用性取决于是否启用相应模块与 Nginx 版本。
二 快速上手步骤
- 安装 Nginx(CentOS 常见方式):
- 安装 EPEL 源:sudo yum install epel-release
- 安装 Nginx:sudo yum install nginx
- 配置负载均衡:编辑 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf
- 检查与生效:
- 语法检查:sudo nginx -t
- 启动/开机自启:sudo systemctl start nginx & & sudo systemctl enable nginx
- 热重载:sudo systemctl reload nginx
- 基本反向代理转发头(示例):
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
以上步骤覆盖在 CentOS 上部署 Nginx 负载均衡的通用流程。
三 策略配置示例
- 轮询(默认)
upstream backend { server 192.168.1.101:80; server 192.168.1.102:80; } - 加权轮询
upstream backend { server 192.168.1.101:80 weight=3; server 192.168.1.102:80 weight=1; } - 最少连接
upstream backend { least_conn; server 192.168.1.101:80; server 192.168.1.102:80; } - IP 哈希(会话保持)
upstream backend { ip_hash; server 192.168.1.101:80; server 192.168.1.102:80; } - 通用哈希(按 URL 一致性)
upstream backend { hash $request_uri consistent; server 192.168.1.101:80; server 192.168.1.102:80; } - 在 server 中反向代理
server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
上述示例覆盖常见策略的最小可用配置,可直接按需替换地址与参数。
四 健康检查与故障隔离
- 被动健康检查(开源版常用):在 upstream 的 server 行使用 max_fails 与 fail_timeout 控制失败阈值与隔离时间,例如:
upstream backend { least_conn; server 192.168.1.101:80 max_fails=3 fail_timeout=30s; server 192.168.1.102:80 max_fails=3 fail_timeout=30s; } - 主动健康检查:**Nginx Plus(商业版)**支持主动健康检查;开源版可借助外部脚本/监控联动摘除异常节点。
- 状态标记:可用 down 临时下线节点,backup 设置备用节点(仅在非 backup 节点异常或繁忙时启用)。
以上机制可提升稳定性与可用性,建议在生产环境结合业务时延与错误率合理设置阈值。
五 实用建议
- 会话保持优先方案:优先在应用侧使用 Redis/JWT 等集中式会话;若需在网络层解决,可用 ip_hash 或 hash $request_uri consistent 实现粘滞或按 URL 固定后端。
- 动态与长时连接:处理时长差异大或长连接较多时,优先 least_conn;静态资源或缓存命中率高的场景,考虑 hash $request_uri consistent 减少缓存失效抖动。
- HTTPS 终端:在 Nginx 上做 SSL/TLS 终止,证书配置在 443 端口的 server 块中,后端仍用 HTTP,简化证书管理与卸载。
- 变更与回滚:遵循“先 nginx -t 校验,再 reload 热更新”的流程,必要时灰度与回滚,避免全量中断。
这些实践有助于在不同业务特征下获得更稳定的分发效果与运维体验。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: nginx在centos上的负载均衡策略
本文地址: https://pptw.com/jishu/756831.html
