加权轮询是nginx应对异构服务器集群最实用、最轻量的负载均衡方案,通过静态权重按性能比例分配流量,需结合健康检查与压测验证。

加权轮询是 Nginx 应对异构服务器集群最实用、最轻量的负载均衡方案。它不依赖外部监控系统,仅靠静态权重就能让高配机器多扛流量、低配机器不被拖垮,配置简单但效果明显。
按性能比例设权重,别拍脑袋
权重必须反映真实处理能力差异。推荐用压测 QPS 比值或硬件资源比(如 CPU 核心数 × 内存 GB 数)作为依据:
- 例如:一台 8C16G 服务器实测稳定承载 3000 QPS,另一台 4C8G 承载 1200 QPS,QPS 比约为 2.5:1 → 可设为 weight=5 和 weight=2
- 权重不要设成 100 和 40 这类大数,容易在日志或监控中误判;保持小整数、比例清晰更稳妥
- 新增同规格机器时,直接复用已有 weight 值,确保整体比例一致
在 upstream 块里写对 server 行
权重必须作为 server 指令的参数写在末尾,且与其他参数(如 max_fails、backup)用空格分隔:
- 正确写法:
server 192.168.1.10:8000 weight=5 max_fails=3 fail_timeout=30s; - 未显式声明 weight 的服务器,默认为 weight=1
- 权重总和不影响算法——Nginx 内部自动按比例归一化,只看相对大小
必须搭配健康检查,避免“带病转发”
光有权重不够,如果高权重机器宕机却还在收请求,失败率会快速上升。要用 health_check 主动探测:
- 配置示例:
health_check interval=5 fails=3 passes=2; -
interval=5表示每 5 秒发一次 HTTP 探针 -
fails=3是连续失败 3 次才标记下线;passes=2是恢复后需连续两次成功才重新进池 - 该模块在 Nginx 1.13+ 默认启用,无需额外编译
上线后盯实际分配比,不是只看平均响应时间
验证是否生效,重点看两组数据:
- 各节点收到的请求数占比,是否接近理论权重比(比如 weight=5:2:3,期望请求比≈50% : 20% : 30%)
- 对应节点的 CPU 使用率曲线,是否与权重趋势基本吻合
- 上线前建议用
ab或wrk小流量压测,确认分配逻辑符合预期











