upstream api_backend {
server 10.0.1.11:8080 weight=5;
server 10.0.1.12:8080 weight=1;
}
nginx -t && nginx -s reload
upstream 给新机器 weight=5 老机器 weight=1,压测 1000 次请求两边还是各 500,权重像没写一样。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,upstream 里同时写了 ip_hash 或 sticky,分流按客户端地址固定,weight 只在首次选机器时参与。请求都来自同一台压测机时,永远落到同一台。
这次卡住的地方就在「负载均衡权重失效」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。
处理上按这个顺序:检查 upstream 是否带了 ip_hash 或 hash 指令;去掉会话保持后重启 再用不同源 IP 压测;确认 weight 写在 server 行末 不是单独一行;在两台上游的 access.log 里各数请求数。
改完只确认一件事:1000 次请求大约 833 次落到 weight=5 的机器 167 次落到另一台。
