阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

虚拟机无法接收Keepalived的vrrp组播

145次阅读
没有评论

共计 1387 个字符,预计需要花费 4 分钟才能阅读完成。

Keepalived 组播故障排查

现象:

在 Ubuntu 14.04 的系统下安装了三台虚拟机,然后配置了一个简单的 keepalived+haproxy 服务。

结果启动后发现三台虚拟机都配上 vip,keepalived.log 日志中也未看见 error 的报错信息。

排查过程:

这些典型的脑裂 (split brain) 现象,一般来说先检查配置文件是否配的有问题。注意下 virtual_router_id 的值。两边是否一样。

然后就是大杀器 tcpdump 出马了。

首先分别在三台机器执行

tcpdump -nn -c 20 -i any host 224.0.0.18

抓取 20 个 VRRP 包,正常输出应该如下:

15:30:25.406369 IP 192.168.70.99 > 224.0.0.18: VRRPv2, Advertisement, vrid 71, prio 1, authtype simple, intvl 1s, length 20
15:30:25.406440 IP 192.168.70.99 > 224.0.0.18: VRRPv2, Advertisement, vrid 71, prio 1, authtype simple, intvl 1s, length 20
15:30:25.406369 IP 192.168.70.99 > 224.0.0.18: VRRPv2, Advertisement, vrid 71, prio 1, authtype simple, intvl 1s, length 20

如果有输出,查看 IP 后面字段,在本次故障中,这里只有本机的 IP,这说明 vrrp 包是正常发送出去的,但是没有收到其他机器的 vrrp 包,说明可能接收组播有问题。

然后再找一台同网段的机器,执行:

tcpdump -nn  -i any host 224.0.0.18

收集一段时间(这时候也可以注意下 vrid 有没有与别人的冲突),发现三台机的 vrrp 包都抓到了,说明三台机都能成功发出组播来,但是各自都没有收到。

由于手上也没有 iperf 工具,也没有做其他的排查,但是基本上也知道是内核参数的设置或者网卡的问题了。

原因:

由于这个系统在其他机器上是正常的,检查发现是在使用 virt-manager 新建虚拟机的时候,选择 nat 网卡模式,这种情况需要手动新建 br 网卡,再使用桥接模式才能成功。

补充:

防火墙开放 vrrp 包:

#iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
# iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT

内核开启转发:

# echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
# sysctl -p

《Keepalived 权威指南》下载见 http://www.linuxidc.com/Linux/2012-05/60951.htm

Nginx+Keepalived 实现站点高可用  http://www.linuxidc.com/Linux/2016-12/137883.htm

Nginx+Keepalived 实现站点高可用(负载均衡)  http://www.linuxidc.com/Linux/2016-12/138221.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138666.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1387字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中