解决keepalived的主备服务器都持有VIP——出现脑裂现象

一、问题描述

1.1、脑裂

当我们使用keepalived方案给服务做主备高可用时,若我们的防火墙是开启状态,那么就会出现主备服务器的网卡都绑定上了VIP(即:两主,这也称为脑裂【本来在一个高可用HA的系统中,主备服务器是一个整体的系统,同一时间只能有一个提供服务,但现在却分裂为了两个独立的节点,这样就会两个节点争抢共享资源,会导致系统混乱、数据损坏等情况】,因此必须防止脑裂)【这是由于keepalived软件是MASTER【192.168.1.10】定时发送vrrp到BACKUP【192.168.1.40】来维持主备关系的,若是BACKUP收不到从主机发送来的vrrp包,则BACKUP会升级为MASTER】。

通过keepalived搭建MySQL双主模式的MySQL集群https://blog.csdn.net/xiaochenXIHUA/article/details/152114041?spm=1001.2014.3001.5501

1.2、观察日志

我们可以手动模拟keepalived的服务故障后,观察【/var/log/messages】日志内容(即可以新开一个终端直接运行【tail -f /var/log/messages】命令持续查看日志内容)。通过观察日志可以发现,当MASTER上的服务或keepalived重启后,先是BACKUP状态,然后会去争抢MASTER后变为了MASTER状态;而BACKUP服务故障或者重启后也是一样先进入BACKUP状态,然后会去争抢MASTER后变为了MASTER状态,如下图所示:

二、问题分析

之所以出现以上的keepalived主备都持有VIP,结合keepalived的vrrp原理,应该是主备服务器直接的vrrp失效了(即:当MASTER定时发送vrrp流量给BACKUP来维持主备关系时,由于BACKUP没有收到,因此去争抢了MASTER权限),我们可以通过使用【tcpdump】抓包工具来查看广播情况,相信操作如下:

bash 复制代码
#抓包分析keeaplived的vrrp广播数据

#1-安装tcpdump抓包工具
yum install tcpdump -y

#2-可在keepalived主备服务器所在局域网内的任意一台机器上执行抓包命令查看广播情况(注意:如下的ens33是网卡名称需要根据自己的实际网卡修改【ip addr】命令可以查询到网卡等信息)
#【正常情况下应该BACKUP这个备的服务器是不应该发送vrrp广播的】
tcpdump -i ens33 vrrp -n


#3-关闭keepalived的主备所在服务器的防火墙后再抓取vrrp广播数据包
#【可以看到只有MASTER(192.168.1.10)在发vrrp广播了】
systemctl stop firewalld
tcpdump -i ens33 vrrp -n

根据抓包的实际情况可以看到我们关闭了防火墙就可以让keepalived的主备高可用成功运行而不产生脑裂;若我们的防火墙开启就会有问题,也就是说我们需要给防火墙放开vrrp的广播数据包,详细操作如下图所示:

三、解决方法

配置防火墙允许VRRP流量通过https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-lvs-connect-vsa#firewallrequirements-VSA

bash 复制代码
#方法一:若我们开启的是【firewalld】防火墙则添加vrrp广播的操作如下
#【keepalived的主备所在服务器都需要操作】查看firewalld防火墙状态,若没启动则启动,然后添加允许vrrp广播通过的规则
systemctl status firewalld.service
systemctl restart firewalld.service
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
firewall-cmd --reload
firewall-cmd --list-all


#方法二:若我们开启的是【iptables】则打开【iptables】文件添加接收vrrp的规则
#【keepalived的主备所在服务器都需要操作】查看iptables状态,然后添加允许vrrp广播通过的规则
systemctl status iptables
systemctl restart iptables
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
iptables -I INPUT -p vrrp -j ACCEPT
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables
iptables -nL

《1》【keepalived的主备所在服务器】通过firewalld添加允许vrrp广播通过的规则实操流程:

《2》【keepalived的主备所在服务器】通过iptables添加允许vrrp广播通过的规则实操流程:

文档 - 手册页 - firewalld.richlanguage |防火墙dhttps://firewalld.org/documentation/man-pages/firewalld.richlanguage.htmlVRRP的原理与配置(附实验)https://www.cnblogs.com/weq0805/p/14817519.htmlVRRP 的原理与配置,你了解多少?https://www.zhihu.com/question/512114545

相关推荐
LHICOD10 分钟前
Linux-2
java·linux·后端·jar·vmware·svm·vm
余额瞒着我当琳16 分钟前
Linux初识:Linux的历史,计算机的发展脉络,发行版本,选购云服务器,安装Xshell,第一次连接,基础命令指南
linux·运维·服务器
时间售卖铺34 分钟前
Docker实战:一键部署轻量级容器
运维·docker·云原生
垆边人似月.38 分钟前
RDMA 文件传输踩坑(四):从固定延时改造为 READY/ACK 协议
linux·服务器·网络
水饺编程40 分钟前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
山乐1913144 分钟前
麒麟系统,安装Nginx并配置https证书
运维·nginx·https
月落汀兰1 小时前
拒绝配置写死镜像!K8s 存储卷与配置管理,PV/PVC、ConfigMap、Secret 实战避坑指南
运维·kubernetes
阿里云基础软件1 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
服务器硬件项目经理1 小时前
《超节点修仙录》· 第一卷·炼气期【第04话】 超节点 vs 普通服务器——不就是多插了几张卡吗?
运维·服务器·人工智能·嵌入式硬件·深度学习·机器学习
程序猿老A2 小时前
轻量应用服务器怎么搭建 WordPress站点?
服务器