适用场景
负载均衡配错最常见的三个问题:健康检查没配(后端挂了还转发)、会话保持失效(用户反复登录)、真实 IP 丢失(日志全是 LB 地址)。
配置步骤(HAProxy 七层)
frontend http-in
bind *:80
default_backend app
backend app
balance roundrobin
option httpchk GET /healthz
http-check expect status 200
server app1 10.0.10.11:8080 check
server app2 10.0.10.12:8080 check
关键参数与建议
- 健康检查必须配,且检查项要反映业务真实状态(不是只检查端口)
- 会话保持方案明确:源 IP 哈希、Cookie 或统一会话存储
- 真实 IP 透传:X-Forwarded-For 与后端应用读取配置配套
- 双机用 Keepalived/VRRP,注意脑裂与抢占延迟
- 容量与超时参数按业务压测结果设定
容易踩的坑
- 健康检查路径返回 200 但不代表业务可用(检查项要贴近业务)
- 超时参数默认偏长,故障感知慢
- 会话保持未按需开启
验证与巡检
echo 'show stat' | socat stdio /var/run/haproxy.sock | head
- 巡检:后端状态 UP、慢请求与错误率指标正常
小结
负载均衡的验收:断一台后端业务不中断、会话不丢、日志能看到真实客户端 IP。三条都过才算配置正确。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。