keepalived主备节点都配置vip,vip切换异常案例分析
原文地址:http://blog.51cto.com/13599730/2161622
参考地址:https://blog.csdn.net/qq_14940627/article/details/79998931 防火墙没有放行keepalived的vrrp协议。
如何放行vrrp:https://www.cnblogs.com/ralphdc/p/7113491.html
https://www.aliyun.com/jiaocheng/137678.html
本人最后将selinux和防火墙关闭了之后,keepalived就不存在两个master了。
keepalived主备节点都配置vip,vip切换异常案例分析
故障现象:
主机名 | director-A | director-B |
IP | 192.168.14.128 | 192.168.14.131 |
默认主备 | MASTER | BACKUP |
优先级 | 90 | 80 |
VIP为 192.168.14.201
先启动主节点keepalived服务,后启动备节点keepalived,发现主备节点都配置了vip。
分析与解决过程:
理应主节点启动keepalived后发送vrrp广播报文,备节点启动keepalived后因为配置同一个广播域,能收到vrrp广播报文,从而运行在BACKUP状态,一直监听着MASTER发送的vrrp广播。
首先检查BACKUP节点message日志,发现keepalived先进入BACKUP状态(根据keepalived.conf配置,正常行为),但间隔4s后vrrp实例切换为MASTER状态,这行为不符合正常逻辑。
而备vrrp实例切换为MASTER的原因通常是一定时间内没有收到MASTER节点发出的vrrp广播报文,因此在备节点物理网卡上tcpdump抓包可见,主节点192.168.14.128发出的vrrp广播报文已经到达备节点。这种情况下,keepalived仍认为主节点是down,很可能是OS对物理网卡收到的vrrp广播报文并未送进内核,keepalived进程无法从捕获主节点发出的vrrp报文。
因此要检查Linux防火墙Selinux和iptables规则
跟踪iptables规则发现,默认的iptables规则仅允许22端口和icmp报文通过
尝试通过另一个客户端192.168.14.129访问备节点80端口,在客户端就能抓包icmp 通知报文。
此iptables链表结构为系统默认配置,该链结构太过复杂,且多有iptables链为空链。因此将多余的iptables规则清理掉,多余的iptables链删除,允许所有报文通过即可。
此时问题已解决,keepalived只有MASTER节点配置vip,且主备节点之间切换vip正常。
不过vip切换的问题虽然解决了,但iptables的遗留问题是在配置文件/etc/sysconfig/iptables中并未配置以上复杂的iptables规则,且重启系统之后,也仍然会生成以上复杂的iptables规则。修改了/etc/sysconfig/iptables-config配置也在重启系统后被复原。定是那系统启动脚本搞得鬼,还得继续排查。
原文转载至:
http://blog.51cto.com/13599730/2161622