Nginx支持轮询、加权轮询与IP哈希策略协同使用,通过定义多个upstream组按业务路径分离流量:session_group用ip_hash保障会话粘性,api_group和static_group用加权轮询实现无状态负载分发,并需结合健康检查、一致性哈希及动态权重优化边缘服务能力。

轮询权重与IP哈希不是互斥选项,而是可分层协同的调度能力。关键在于按业务语义拆分流量路径,让每类请求走最匹配的策略——不强行统一,也不混合滥用。
按业务路径分离 upstream 组
同一台 Nginx 实例中可定义多个 upstream 块,分别启用不同算法。核心是把“需要会话粘性”的路径(如登录态、购物车、上传回调)和“无状态、可任意分发”的路径(如静态资源、搜索接口、模型推理查询)物理隔离:
-
session_group:启用
ip_hash,仅承接/user/、/cart/、/upload/等路径 -
api_group:配置加权轮询,承接
/v1/inference/、/search/、/status/等无状态 API - static_group:同样用加权轮询,但权重按边缘节点带宽与缓存命中率设定(例如 CDN 边缘节点权重设为 6,纯计算节点设为 2)
加权轮询要对齐真实边缘能力
权重不能只看 CPU 核数,需综合评估三项指标后折算:
• 网络 RTT(到终端用户平均延迟)
• 本地缓存命中率(L1/L2 缓存大小 + 热点数据预载策略)
• 模型加载开销(是否已 warmup、是否支持 vLLM/PagedAttention)
例如:某华东边缘节点 RTT=18ms、缓存命中率 72%、已预热 Qwen2.5-7B,权重设为 8;华北节点 RTT=42ms、命中率 41%,权重设为 3。
IP 哈希需防 IP 聚合失衡
企业用户、校园网、NAT 网关会导致大量客户端共用一个公网 IP,使单台后端过载。缓解方式有二:
- 改用
hash $remote_addr consistent;替代ip_hash,基于一致性哈希降低节点增减时的重映射比例 - 在应用层补充 session stickiness:将用户 ID 或设备指纹写入 cookie,Nginx 用
hash $cookie_uid路由,比纯 IP 更精准
边缘网关必须加健康检查与自动降级
仅靠算法不够,边缘节点故障率高于中心集群。需在 upstream 中显式开启:
-
max_fails=2 fail_timeout=30s:连续失败 2 次,30 秒内不转发 -
slow_start=60s:新节点上线后 60 秒内权重从 0 渐进到设定值,避免冷启动冲击 - 搭配
proxy_next_upstream error timeout http_503,当后端返回 503 或超时时自动切下一节点

















