加权轮询不负责故障转移,backup节点独立于权重机制,仅当所有非backup服务器不可用时启用,其weight值被完全忽略,不参与流量分配。

加权轮询本身不负责故障转移,备用机(backup)是独立于权重机制的高可用补充角色——它不参与常规流量分发,只在所有非 backup 服务器全部不可用时才被启用。
backup 服务器不会被计入加权计算
即使给 backup 节点设了 weight=10,Nginx 也会完全忽略它的 weight 值。它只在 upstream 中其他 server 全部因健康检查失败(或被显式标记为 down)时才激活。
- 正常情况下,backup 服务器的 access log 和 error log 不会出现任何请求记录
- 它的存在不影响其余节点的加权比例(比如 3:1:2 的三台主节点,仍按 50% / 16.7% / 33.3% 分配)
- 不能和 slow_start 同时用于 backup 节点(Nginx 会报配置错误)
如何正确配置带 backup 的加权轮询
在 upstream 块中,将 backup 节点单独列出,并确保它不带 weight(或 weight 值无实际意义):
server 192.168.1.10:8080 weight=4 max_fails=2 fail_timeout=20s;
server 192.168.1.11:8080 weight=1 max_fails=2 fail_timeout=20s;
server 192.168.1.12:8080 backup;
}
- backup 必须放在所有非 backup server 之后(虽非强制,但属最佳实践)
- 建议为 backup 节点也配置 max_fails 和 fail_timeout,避免它自己上线后又快速宕机
- 若需多台备用机,可写多个 backup 行,它们之间按默认轮询方式启用(不加权)
backup 和其他高可用参数的协作关系
backup 不是孤立存在的,它依赖 Nginx 的健康检查机制触发切换:
- max_fails + fail_timeout:决定何时把某台主节点标记为“不可用”,这是 backup 启动的前提
- down:可手动置为 down 的节点,同样会让流量转向 backup(无需等健康检查失败)
- slow_start:仅适用于恢复中的主节点,backup 上线时不走 slow_start,而是立即承接全部流量
什么时候该用 backup,而不是调低 weight?
weight 是用来调节“能干活的机器之间的流量比例”,backup 是用来定义“不干活、只兜底的机器”。二者定位不同:
- 想让某台机器少接点活 → 降低它的 weight(如 weight=1)
- 想让某台机器平时完全不接活,只在紧急时顶上 → 加 backup 标记
- 误把 backup 当成低权重节点(比如设 weight=0 backup),会导致该节点既不参与轮询、也无法被健康检查监控,失去兜底能力


















