云服务器禁用二层组播,224.0.0.18报文被网络策略丢弃,导致主备失联、VIP漂移失效;必须改用单播模式,并严格配置vrrp_strict注释、unicast_src_ip、unicast_peer镜像对称、virtual_router_id一致及防火墙放行raw UDP。

Keepalived 在云服务器上无法使用默认组播模式,必须改用单播模式——这是唯一可靠解法,没有例外。
为什么云环境必须禁用组播
云平台(AWS/Azure/GCP/阿里云等)普遍禁用二层组播,224.0.0.18 的 VRRP 组播报文根本发不出去,也收不到。你用 tcpdump -i eth0 host 224.0.0.18 抓包,大概率看到零条记录。这不是配置错,是网络策略直接丢弃。组播模式在云上启动后看似正常,实则主备节点完全“失联”,VIP 漂移失效,故障时不会自动切换。
单播模式核心配置项必须写全
单播不是简单加几行就完事,漏掉任意一项都会导致 keepalived exited with permanent error config 启动失败:
-
vrrp_strict必须注释或删除——它强制校验 VRRP 协议合规性,而单播不满足原始 VRRP 规范,启用即报错 -
unicast_src_ip必须设成本机真实 IP(如172.25.254.60),不能写0.0.0.0或内网别名 -
unicast_peer必须是对方节点的**可路由 IP**(跨网段也行),且每个节点的配置要镜像对称:A 的unicast_peer是 B 的 IP,B 的unicast_peer必须是 A 的 IP - 所有节点的
virtual_router_id必须一致,否则不视为同一组 VRRP 实例
单播配置示例与常见错误
以双节点为例(主:192.168.118.129,备:192.168.118.132):
IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.118.129
unicast_peer {
192.168.118.132
}
track_script {
check_nginx
}
}
常见错误:
- 只在主节点配
unicast_peer,备节点仍用组播——结果是单向心跳,备节点永远收不到主节点通告 -
unicast_src_ip写成 VIP(如192.168.118.200)——系统找不到该地址绑定的网卡,启动失败 - 防火墙未放行 VRRP 单播报文(UDP 端口无固定值,实际走的是 raw socket,需开放
iptables -I INPUT -s 192.168.118.132 -j ACCEPT类似规则)
跨网段单播可行但要注意路由可达性
单播天然支持跨网段,只要两个节点能 ping 通、路由表正确、中间设备不限制 UDP raw 包即可。但容易忽略两点:
- 云服务器多网卡时,
unicast_src_ip必须指定走哪个出口网卡的 IP,否则可能从错误接口发包 - 某些云厂商(如腾讯云)的私有网络 ACL 默认禁止非标准协议通信,需手动添加“允许 VRRP 协议”或“允许所有 UDP”规则
-
advert_int建议调大到2或3,避免因跨网段延迟抖动误判超时
单播不是“换种方式发心跳”,而是彻底绕过组播依赖;真正难的不是写配置,是确认两端网络路径上每一道策略都允许 raw UDP 报文双向通行——这点比语法细节重要十倍。

















