1.何为keepalived脑裂
Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。
2.产生原因
1.高可用服务器对之间心跳线链路发生故障,导致无法正常通信;
2.心跳线线路断开,老化;
3.网卡及相关驱动坏了,ip配置及冲突问题;
4.心跳线间连接的设备故障;
5.仲裁机器出现问题;
6.其他服务配置不当;
7.vrrp实例名字不一致、优先级一致;
8.高可用服务器上开启了iptables防火墙规则阻挡了心跳消息传输;
9.高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败;
10.Keepalived配置里同一 VRRP实例如果virtual_router_id两端参数配置不一致。
3.解决方案
1.当检测到脑裂时强行关闭一个心跳节点,关闭备用节点的监听;
2.多节点集群中,可以通过增加仲裁的机制,确定谁该获得资源;
3.对脑裂的监控报警,脚本监测;
检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息。脚本(在从节点上)如下:
vim check.sh
#!/bin/bash
# 检查脑裂的脚本,在备节点上进行部署
LB01_VIP=192.168.100.100
LB01_IP=192.168.100.11
LB02_IP=192.168.100.12
#通过状态信息,过滤结果,并统计
while true
do
ping -c 2 -W 3 $LB01_VIP &>/dev/null
if [ $? -eq 0 -a `ip add|grep "$LB01_VIP"|wc -l` -eq 1 ];then
echo "machine is brain."
else
echo "machine is ok"
fi
sleep 5
done
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤