今天下午,用vmware玩下keepalived+nginx+tomcat的架构,但设置完后,确发现主备都有vip,我对了所有的配置,都找不出问题时,以为是备机没收到组播包,于是用tcpdump查看网络接口的接受数据,命令: tcpdump -i ens33 vrrp -n
发现是有收到组播包的,不过发现主备机都在发
看了上面图的报文,优先权没问题,按照arrp协议,既然备机有收到master组播报文,自己应该不会再去变成master发报文了才对。能想到的问题是:难道就算tcpdump看到了,防火墙还是能够拦截?也就是tcpdump工作在防火墙之前。于是在备机修改防火墙允许vrrp的组播:
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
然后在查看vip和网络接口的组播报,已经好了(上面命令是centos7的,如果是之前centos版本自己百度下怎么执行iptables),如下: