Keepalived VIP秒级漂移取决于priority数值与VRRP协议行为,关键配置virtual_router_id、authentication、advert_int、interface必须完全一致;state仅标识初始状态,VIP归属由priority决定;需关闭防火墙、SELinux,开启IP转发并同步时间;验证需结合日志与网络层检查。

Keepalived 实现虚拟 IP(VIP)在 Master 与 Backup 之间秒级漂移,核心不在于“谁叫 Master”,而在于 priority 数值 + VRRP 协议行为。只要配置得当,故障检测和切换可在 1–3 秒内完成。
关键配置项必须一致且合理
两台节点的以下参数必须完全相同,否则 VRRP 报文会被丢弃,VIP 无法协商:
- virtual_router_id:取值范围 0–255,同一局域网内全局唯一;
- authentication:auth_type 和 auth_pass 必须严格一致;
- advert_int:建议设为 1(即心跳间隔 1 秒),这是实现秒级响应的基础;
- interface:绑定的物理网卡名需真实存在(如 eth0、ens160),且两节点命名尽量统一。
state 和 priority 的真实作用
state 只是初始状态标识,不是角色锁定开关。真正决定 VIP 归属的是 priority 比较结果:
- 主节点 priority 设为 101,备节点设为 99(差值 ≥ 2 更稳妥);
- 两台都配 state BACKUP 是更安全的做法,可避免脑裂风险;
- 若主恢复后需自动抢回 VIP,必须在
vrrp_instance块外层添加 nopreempt —— 注意不是注释掉它,而是显式写入; - 若不加 nopreempt,Keepalived 默认启用抢占,主恢复即夺回 VIP。
基础环境与服务准备
忽略这些环节,VIP 往往“配了也不漂”:
- 关闭或放行防火墙:
systemctl stop firewalld && systemctl disable firewalld; - 禁用 SELinux:
setenforce 0并修改/etc/sysconfig/selinux中 SELINUX=disabled; - 确认 IP 转发已开启(尤其用于代理或 LVS 场景):
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p; - 确保两节点时间基本同步(
chronyd或ntpd),避免因时间差干扰健康检查逻辑。
验证与排错要点
启动后不要只看 service 状态,要结合日志和网络层确认:
- 查看 VIP 是否生效:
ip addr show dev eth0 | grep 7.225.175.230; - 实时观察 Keepalived 日志:
tail -f /var/log/messages | grep Keepalived_vrrp; - 手动模拟主节点宕机(如
systemctl stop keepalived),观察 Backup 是否在 1–2 秒内获得 VIP 并响应 ARP; - 注意:如果 VIP 绑定后客户端 ping 不通,先检查是否启用了
vrrp_strict—— 它会拒绝非标准 VRRP 报文,在单播或复杂网络中建议注释掉。


















