适用场景

负载均衡配错最常见的三个问题:健康检查没配(后端挂了还转发)、会话保持失效(用户反复登录)、真实 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。三条都过才算配置正确。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。