Linux高可用集群采用Keepalived+Nginx双机热备架构,通过VIP自动漂移实现秒级故障转移;需满足时间同步、静态IP、主机名解析、VRRP端口放行及SELinux禁用等基础条件。

Linux 服务器搭建高可用集群,核心是消除单点故障、实现自动故障转移。最常用且成熟的做法是用 Keepalived + Nginx(或 HAProxy/LVS) 构建双机热备架构:Nginx 负责流量分发,Keepalived 管理虚拟 IP(VIP)并在主节点宕机时秒级切换到备用节点。
基础环境准备
确保以下条件全部满足,否则集群无法稳定运行:
- 至少两台同版本 Linux 服务器(推荐 CentOS 7/8 或 Rocky Linux),内核时间误差控制在 ±2 秒内(用
chronyd同步) - 所有节点配置静态 IP,并在
/etc/hosts中完成双向主机名解析(如192.168.10.10 node1、192.168.10.11 node2) - 关闭防火墙或放行 VRRP 协议端口(默认使用 224.0.0.18 多播地址,需允许 UDP 与 IGMP 流量)
- 禁用 SELinux(或设为 permissive 模式),避免策略干扰 Keepalived 绑定 VIP 或执行脚本
Nginx 与 Keepalived 安装配置
在两台节点上执行相同操作:
- 安装服务:
yum install -y nginx keepalived - 配置 Nginx 作为反向代理(例如转发至后端 Tomcat 集群),确保
nginx -t无报错并能正常启动 - 编写健康检查脚本(如
/etc/keepalived/check_nginx.sh),检测 Nginx 进程与端口(80/443)是否存活,失败则退出非零状态 - 赋予脚本可执行权限:
chmod +x /etc/keepalived/check_nginx.sh
Keepalived 主备节点配置
主节点 /etc/keepalived/keepalived.conf 关键项:
-
state MASTER,priority 100 -
virtual_router_id必须主备一致(如 51) -
virtual_ipaddress块中声明 VIP(如192.168.10.100/24) -
track_script关联前述检查脚本,interval 2表示每 2 秒检测一次
备节点配置仅需修改:state BACKUP、priority 90(低于主节点)、保持 virtual_router_id 和 VIP 不变。
验证与日常运维要点
启动后确认关键状态:
- 主节点执行
ip addr show应能看到 VIP 绑定在网卡上;备节点不应出现该 IP - 手动停掉主节点的 Nginx,约 2–3 秒后 VIP 自动漂移到备节点(可通过
tcpdump -i ens33 vrrp抓包验证状态切换) - 客户端始终通过 VIP 访问服务,无需感知后端变化
- 定期检查
journalctl -u keepalived -n 50日志,关注 “Transition to MASTER/BACKUP” 和脚本执行结果


















