Nginx负责流量分发,Keepalived保障入口高可用;主备节点需系统一致、关闭防火墙与SELinux、统一网卡名和hosts;Nginx配置健康检查与合理负载策略,Keepalived通过priority、vrrp_script和auth_pass确保VIP秒级漂移,验证须用ip addr和日志观察切换过程。

用 Nginx 和 Keepalived 搭建稳定可用的集群,核心是“分工明确、互相兜底”:Nginx 负责把流量合理分发到后端服务,Keepalived 负责确保这个入口永远在线。只要配置得当,主节点宕机时 VIP 会在几秒内自动漂移到备节点,用户几乎无感知。
基础环境必须统一规范
两台负载均衡节点(主+备)需保持高度一致:
- 操作系统版本相同(推荐 CentOS 7.9 或 Rocky Linux 9.x)
- 关闭防火墙:
systemctl stop firewalld && systemctl disable firewalld - 禁用 SELinux:
setenforce 0并修改/etc/selinux/config中SELINUX=disabled - 确认网卡名一致(如
ens33或eth0),避免配置中 interface 写错 - 所有节点配置好
/etc/hosts,确保主机名可解析
Nginx 配置要面向真实业务
不只是能启动,更要适配后端服务特性:
- 反向代理 upstream 块建议启用健康检查参数,例如:
max_fails=3 fail_timeout=10s,让 Nginx 主动踢出异常节点 - 根据业务需要选择负载算法:会话类应用用
ip_hash;性能均衡用默认轮询或加权轮询 - 后端服务若为 Tomcat 或 Spring Boot,默认端口常为 8080,注意 proxy_pass 地址写全(如
http://192.168.1.20:8080/) - 配置完成后务必执行
nginx -t校验语法,再nginx -s reload生效
Keepalived 配置关键在状态与检测
主备不是靠名字决定,而是由 priority 和脚本联动控制:
- 主节点
state MASTER、priority 100;备节点state BACKUP、priority 90 -
virtual_router_id必须完全一致(范围 1–255),否则无法组成 VRRP 组 - 强烈建议添加 vrrp_script 检测 Nginx 进程是否存活,例如:
vrrp_script chk_nginx { script "/usr/bin/killall -0 nginx" interval 2 weight -5 } - 认证块
auth_pass主备必须相同,且长度建议为 8 位以内纯数字或字母 - VIP 地址不能与任何物理网卡 IP 冲突,且需确保所在网段路由可达
验证与日常维护要点
上线前和运行中都要关注几个实际信号:
- 用
ip addr show查看 VIP 是否出现在主节点网卡上 - 用
tail -f /var/log/messages | grep Keepalived观察切换日志 - 手动停掉主节点 Nginx,等待约 3–5 秒,检查 VIP 是否自动迁移到备节点
- 客户端始终只访问 VIP(如
curl http://192.168.1.100),不直连具体 Nginx 服务器 IP - 定期检查 keepalived 进程状态:
systemctl status keepalived


















