Keepalived心跳检测本身不加密,但可通过协议认证、网络隔离、多路径探测和状态联动四层加固,把误切和脑裂风险压到最低。

启用VRRP认证机制
VRRP默认组播报文明文传输,必须加认证防伪造或干扰:
- 在
vrrp_instance块内强制配置authentication段,类型仅用PASS(简单密码)或AH(IPSec认证头,需内核支持); - 密码长度严格控制在1–8字符,超长会被截断,例如
auth_pass Keep@2026实际只取前8位; - 主备节点的
virtual_router_id、auth_type、auth_pass三者必须完全一致,否则无法建立VRRP会话。
切换组播为单播心跳
组播依赖交换机IGMP支持,云环境或VLAN划分复杂时易中断。改单播可绕过中间设备依赖:
- 在
vrrp_instance中删除advert_int以外所有默认组播配置; - 添加
unicast_src_ip(本机真实IP)和unicast_peer(对端真实IP),例如:
unicast_src_ip 192.168.10.10
unicast_peer { 192.168.10.11 } - 单播模式下防火墙需放行目标端口(协议号112),而非组播地址224.0.0.18。
叠加脚本健康检查
仅靠网络心跳不够——网卡通但Nginx崩了,VIP漂过去也没用。必须绑定业务状态:
- 定义
vrrp_script,例如检查Nginx进程+HTTP响应码:
vrrp_script chk_nginx {
script "/bin/bash -c 'kill -0 $(cat /var/run/nginx.pid) 2>/dev/null && curl -s --head http://127.0.0.1 | head -1 | grep '200 OK''"
interval 3
fall 3
rise 2
} - 在
vrrp_instance中用track_script引用,并设置weight -5(检测失败时降权); -
fall 3表示连续3次失败才触发降权,避免瞬时抖动误判。
配置非抢占+优先级锁定
主节点恢复后自动抢回VIP可能引发服务震荡,尤其在数据库写入场景中极危险:
- 主节点配置
state BACKUP+nopreempt+ 高priority(如150); - 备节点配
state BACKUP+ 低priority(如100),不加nopreempt; - 这样主节点故障时备节点升主,主恢复后保持BACKUP状态,VIP不动,人工确认无误后再手动触发切换。

















