权重调度通过差异化流量分配间接实现分级处理,主力层(weight=5–10)、辅助层(weight=2–3)、兜底层(backup或weight=1)构成三级梯队,并结合down、backup、slow_start等机制动态调整与平滑接入。

权重调度本身不直接实现“分级处理”,而是通过差异化流量分配,间接支撑分级场景。它的核心是让高权重节点承担更多请求,低权重节点承接基础或降级流量,再配合状态标记与策略组合,形成事实上的服务分级。
用 weight 划分主力与辅助层级
权重值直接决定流量占比,适合按能力或角色划分层级:
- 主力层:高性能服务器设高 weight(如 5–10),承担主要业务流量
- 辅助层:中等配置设中 weight(如 2–3),用于缓冲或灰度验证
- 兜底层:老旧或备用机设低 weight(如 1)或配合 backup 标记,仅在主力异常时启用
例如:server 10.0.0.1:8080 weight=8;(主力)、server 10.0.0.2:8080 weight=2;(辅助)、server 10.0.0.3:8080 backup;(兜底)。三者不同时参与调度,自然形成三级响应梯队。
结合 down 和 backup 实现运行时分级切换
weight 是静态比例,但搭配状态标记可动态调整层级优先级:
- 临时维护时,对辅助层节点加 down,流量自动收敛到主力层
- 主力层全部不可用时,backup 节点才被纳入轮询,此时它成为实际兜底层
- 避免给 backup 节点设 weight——它不参与常规权重计算,只做故障兜底
注意:backup 节点在 ip_hash 下不生效,仅在 round-robin 或 least_conn 中起作用;而 down 节点既不收流量,也不被健康检查探测。
用 slow_start 缓解新节点接入冲击
新加入的高权重点(如扩容主力层)若直接满额承接流量,容易引发雪崩。slow_start 可让其“渐进式”进入主力层级:
- 例如:server 10.0.0.4:8080 weight=10 slow_start=60s;
- 上线后前 60 秒,权重从 0 线性增长至 10,避免瞬时压垮
- 该机制特别适用于主力层滚动升级或弹性伸缩场景
避开权重失效陷阱,确保分级逻辑生效
以下情况会导致 weight 失效,破坏分级设计:
- 启用了 ip_hash 或 hash $request_uri:此时 weight 仅用于故障剔除后的 fallback,不再影响日常分流
- 误将 weight 写在 location 或 proxy_pass 行:Nginx 报错,配置无法加载
- 权重设为小数或负数:nginx -t 检查失败,reload 中断服务
务必确认 upstream 块使用默认轮询(无 ip_hash/least_conn 等显式指令),且所有 weight 都紧贴 server 地址书写。











