适用场景
负载均衡配错最常见的三个问题:健康检查没配(后端挂了还转发)、会话保持失效(用户反复登录)、真实 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。三条都过才算配置正确。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。