问题背景
某项目安装keepalived+nginx做高可用时发现两个节点都获取到了vip地址,查看本机防火墙、测试对端常用端口、ping等无问题,也确定配置复用的其他项目基本上无问题,那么如何确定是否网络问题呢?
tcpdump排查vrrp协议
首先可以通过vrrp协议来查看两台主机的流量情况,tcpdump是支持直接过滤vrrp协议的,如果两个节点正常运行,那么可以通过tcpdump看到两个节点之间存在交互行为,命令如下:
tcpdump -i ETH0 -p vrrp
如果在每个节点只能看到 224.0.0.18
与本机的交互流量而没有对方机器的流量,那么基本上可以判断为网络问题
主动测试组播流量
如果仍然存在怀疑,那么可以主动测试组播流量是否存在问题
vrrp协议使用的地址 224.0.0.18
进行组播,那么可以在其中一台机器ping这个地址,然后在另一台抓取流量,步骤如下:
- 在机器A ping组播地址
tcpdump -i eth0 multicast
- 在机器B抓取组播流量
ping 224.0.0.18
此时正常能够看到机器A的ping流量
评论 (0)