解决Lvs+keepalived出现双VIP,即脑裂现象

一、背景

  • 脑裂(split-brain):指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。

    对于无状态服务的HA,无所谓脑裂不脑裂;但对有状态服务(比如MySQL)的HA,必须要严格防止脑裂。

  • MASTER 192.168.1.124:安装Lvs+Keepalived

  • BACKUP 192.168.1.126:安装Lvs+Keepalived

  • VIP:192.168.1.110

  • 安装完Lvs+keepalived后,正常情况下,应该是master主机拥有vip,但是当你在两台keepalived主机上执行

ip addr

如果看到两台机器都绑定了vip那么就是出现了双vip的现象,即脑裂现象。例如下面

  • master


    image.png
  • backup


    image.png

二、解决

1.查看keepalived日志情况
  • 分别重启一下两台机器的keepalived服务
systemctl restart keepalived
  • 观察日志
tail -f /var/log/messages
  • 此处我的情况发现,Master重启后,它会直接去争抢master;BackUp重启后,先是进入BackUp状态,然后马上又会争抢进入Master状态。


    Master keepalived log
BakcUp keepalived log
  • 出现这种情况,应该是两者之前VRRP失效了,有可能backup主机没有收到master主机的广播,所以自己去争抢了master权限。下面在主机上看看广播情况。
  • 安装tcpdump抓包工具
yum install tcpdump -y
  • 在局域网内的任意一台机器上执行命令,查看广播情况(注意自己的网卡名称此处我的是ens33)
tcpdump -i ens33 vrrp -n
  • master:192.168.1.124 与 backUp:192.168.1.126都在广播,正常情况下backUp应该是不广播才对。


    image.png
  • 尝试关闭防火墙,将master与backup的防火墙都关闭
systemctl stop firewalld.service
  • 就会发现只有Master在发广播了


    image.png
  • 并且会发现在backUp主机上执行 ip addr ,其没有绑定vip了。情况恢复正常。


三、结论

  • 我此处发现的脑裂,应该是防火墙将vrrp 广播给过滤掉了,导致backup接受不到master的广播,然后自己去争抢了vip。所以此处我将防火墙关闭了,如果有对防火墙要求,可以只将防火墙的vvrp开启。注意命令中要修改自己的网卡名称ens33
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

你可能感兴趣的:(解决Lvs+keepalived出现双VIP,即脑裂现象)