keepalived配置vip避免冲突需从网络、协议、运维三层面协同控制:避开dhcp地址段,禁用组播改单播直连,严格校验virtual_router_id、auth_pass、interface、priority四项参数一致,并通过ip addr、tcpdump和curl三重验证确保状态收敛。

Keepalived 配置 VIP 时避免 IP 冲突,关键在于隔离通信、规避动态分配、严格校验配置。不是单纯“设个 IP 就完事”,而是要从网络层、协议层和运维规划三方面协同控制。
避开 DHCP 池与网段重叠
VIP 必须落在静态可管范围内,不能和局域网 DHCP 自动分配的地址段交叉。比如 DHCP 池是 192.168.1.100–192.168.1.200,那 VIP 就不该选 192.168.1.150;建议划出独立子网或高位地址(如 192.168.1.250/32),并提前在 IT 资产表中标记为“Keepalived 专用 VIP”,防止被其他设备误配。
禁用组播,改用单播直连
默认组播地址 224.0.0.18 是公共频道,多套 Keepalived 实例共存时会互相干扰,导致心跳误判、双主抢占。解决方式是关闭组播,显式指定对端真实 IP:
- 在 vrrp_instance 块中删除
vrrp_strict(否则单播会报错) - 添加
unicast_src_ip 192.168.1.101(本机管理 IP) - 添加
unicast_peer { 192.168.1.102 }(仅写对方真实 IP,不写 VIP)
统一并校验核心参数
主备节点看似独立,实则必须“严丝合缝”才能组成一个 VRRP 组。以下四项必须完全一致:
- virtual_router_id:取值 1–255,同一组只能有一个 ID,差一位就各自成团
- auth_pass:明文密码需完全相同(区分大小写),建议用随机字符串而非简单数字
- interface:绑定的物理网卡名(如 eth0、ens33)必须一致,虚拟网卡或 bond 接口需特别注意命名
- priority:主节点数值更高,但差值不宜过大(如 100 vs 90),避免故障恢复时切换过慢
上线前做三重交叉验证
配置写完不等于生效,必须人工确认状态是否收敛:
- 执行
ip addr show | grep "inet.*VIP",两台机器只有一台显示该 VIP - 在备机运行
tcpdump -i eth0 vrrp -n -c 10,应持续收到主节点发来的通告包 - 从外部客户端(非本机)反复
curl -I http://VIP,响应头中的Server或后端日志时间戳应始终来自同一台机器











