keepalived脑裂?什么是脑裂?如何解决?

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

什么是脑裂?

脑裂(split-brain)现象是指两个节点失去联系后,各自独立成为主节点,争夺共享资源,导致系统混乱和数据损坏。这种现象在有状态服务(如MySQL)的HA中尤其需要避免。

脑裂产生的原因:

1.心跳线路坏了

2.高可用服务器之间的心跳链路坏掉,导致无法正常的通信

3.防火墙的错误,阻碍了信息传输

4.配置错误,心跳网卡配置错误或者是比较级等

5.keepalived的配置参数不同,比如节点id参数

6.ip配置及冲突,DNS解析等问题

7.iptables规则问题

常见的解决方案:

当检测到脑裂的时候,强行关闭一个心跳节点,相当于备节点接受不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源。


增加冗余心跳线,使用多条心跳线路,减少脑裂发生的几率。


设置仲裁机制,通过检测外部参考点(网关IP)去判断节点是否应该放弃资源争夺。

自定义脚本

建议编写自定义脚本来处理脑裂问题。脚本可以周期性地ping网关,并在连续失败达到一定次数时停止Keepalived服务。如果网关恢复通信,则重新启动Keepalived服务。这样的脚本可以加入到crontab中,实现自动化监控和处理。

解决keepalived的脑裂问题的脚本

vim check.sh
#!/bin/bash
LB01_VIP=192.168.13.100
LB01_IP=192.168.13.22
LB02_IP=192.168.13.23
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 "is brain"
    else
 
        echo "is ok"
 
    fi
 
    sleep 5
 
done

通过以上的处理,可以有效的解决keepalived的脑裂问题,保证系统的高可用性何数据的一致性。可以看作者上期的对于高可用整理的脚本,进行参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值