适用场景

负载均衡配错最常见的三个问题:健康检查没配(后端挂了还转发)、会话保持失效(用户反复登录)、真实 IP 丢失(日志全是 LB 地址)。

配置步骤(Nginx + Keepalived 双机)

upstream app {
    server 10.0.10.11:8080 max_fails=3 fail_timeout=10s;
    server 10.0.10.12:8080 max_fails=3 fail_timeout=10s;
    keepalive 32;
}
server {
    listen 80;
    location / {
        proxy_pass http://app;
        proxy_set_header X-Real-IP ;
        proxy_set_header X-Forwarded-For ;
    }
}
# keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    virtual_ipaddress { 10.0.10.100/24 }
}

关键参数与建议

  • 健康检查必须配,且检查项要反映业务真实状态(不是只检查端口)
  • 会话保持方案明确:源 IP 哈希、Cookie 或统一会话存储
  • 真实 IP 透传:X-Forwarded-For 与后端应用读取配置配套
  • 双机用 Keepalived/VRRP,注意脑裂与抢占延迟
  • 容量与超时参数按业务压测结果设定

容易踩的坑

  • 只配端口检查,后端应用假死仍被转发
  • 未透传真实 IP,应用日志全是负载地址
  • Keepalived 未配抢占延迟,主备来回切换

验证与巡检

curl -I http://VIP/ | head -3
ip addr show eth0 | grep 10.0.10.100
  • 巡检:后端健康检查生效、真实 IP 可见、VIP 主备状态正确

小结

负载均衡的验收:断一台后端业务不中断、会话不丢、日志能看到真实客户端 IP。三条都过才算配置正确。

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