Keepalived 结合 Nginx 实现 VIP 漂移,核心是用 VRRP 协议自动选举主节点并绑定虚拟 IP;主节点故障时备节点秒级接管,用户无感知。需准备双机环境、配置健康检查脚本、设置主备优先级与认证,并验证 VIP 漂移及服务连续性。
Keepalived 结合 Nginx 实现 VIP 漂移,核心是用 VRRP 协议让多台 Nginx 服务器自动选举主节点,将同一个虚拟 IP 绑定到当前主节点网卡上;当主节点故障时,备节点秒级接管 VIP,用户无感知切换。
确保至少两台服务器(例如 node1 和 node2),均安装好 Nginx 和 Keepalived,并能互相 ping 通。VIP(如 192.168.10.100)需与真实 IP 在同一网段,且未被其他设备占用。关闭防火墙或放行 VRRP 组播(目的地址 224.0.0.18,协议号 112):
Keepalived 不直接监控 Nginx 进程,而是通过自定义脚本检测其服务能力(比如能否响应 HTTP 请求)。在两台机器上创建检测脚本:
/etc/keepalived/check_nginx.sh#!/bin/bashif ! curl -s --head http://127.0.0.1:80 | grep "200 OK" > /dev/null; then systemctl stop keepalivedfi
赋予执行权限:chmod +x /etc/keepalived/check_nginx.sh,并确保 Nginx 已启动且首页可访问(如返回 200)。
编辑 /etc/keepalived/keepalived.conf,关键字段说明:
示例 node1(主)配置节选:
vrrp_script chk_nginx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -5}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.10.100/24 dev eth0 } track_script { chk_nginx }}
启动 Keepalived 后,执行以下操作确认效果: