Web 服务器Upstream
负载均衡 是什么?
按策略把请求分给多台后端,避免单点过载
类比:银行叫号,哪个窗口空就去哪
常见策略
没有最好的策略,只有匹配业务特征的策略。
- 轮询(默认):请求平均分配,适合无状态服务
- weight:按机器配置加权,新机器先给低权重
- ip_hash:同一 IP 固定到同一台,解决 session 问题(不如集中存 session)
- least_conn:给当前连接最少的机器,适合长连接
- hash $request_uri:同一 URL 命中同一台,提升缓存命中
健康检查
开源版 Nginx 用被动检查:max_fails=3 fail_timeout=10s,连续失败 3 次就摘除 10 秒。要主动探测需要商业版或 OpenResty + 健康检查模块。
别忘了会话
负载均衡后请求可能落到任意一台,本地 session 会丢。正确做法是把 session 存 Redis,或者用 JWT 无状态令牌。