轮询调度新增节点后秒级生效,reload即可纳入轮询队列,按顺序分发新请求;但负载均衡效果取决于后端性能一致性、健康检查启用及连接复用配置。
轮询调度本身不感知服务器数量变化,但能立即响应新增节点——只要把新地址加进 upstream 块并执行 nginx -s reload,流量就会在下一轮请求中开始分发到新实例。它不依赖服务发现或动态拉取,也不需要重启进程,是原生支持最轻量的水平扩展方式。
轮询的调度逻辑只依赖 upstream 配置中的 server 列表顺序。Nginx 在 reload 时会重建 upstream 连接池,新加入的 server IP:PORT 立即进入轮询队列。已有长连接不受影响,新请求按 A→B→C→D… 顺序自然覆盖全部节点,无需等待、预热或权重过渡。
节点数变多不代表负载自动更均衡,轮询只保证“请求数”平均,不保证“资源消耗”平均。实际效果取决于后端一致性与配套机制:
weight 参数(如老机 weight=5,新机 weight=10)当后端节点超过 10 台,手动维护 IP 列表容易出错且难以同步。推荐分阶段优化:
upstream.conf 文件中管理,扩容仅改该文件 + reloadconsul-template 或 nginx-upsync-module,监听服务注册中心变更,自动生成配置并触发 reloadbalancer_by_lua_block 动态选节点,绕过 reload,实现毫秒级节点上下线感知不能只看配置加了没,要从请求路径和指标两个层面确认:
curl -s http://nginx-ip | grep "backend-id" 连续调用 12 次,观察返回是否覆盖全部节点(含新节点),且顺序符合轮询规律$upstream_addr,统计各节点请求数占比,偏差应控制在 ±12% 内upstream_response_time 分位值,确保新节点 P95 延迟未明显高于集群均值(否则可能是网络、磁盘或下游依赖未就绪)