高可用之裂脑问题

落爺英雄遲暮 提交于 2019-12-18 03:02:30

1. 裂脑介绍

  • 两个节点互相认为对方已挂掉,然后开始争抢共享资源,结果会导致系统混乱,数据损坏。这就是脑裂问题。

2.如何产生的裂脑现象

  • 高可用服务器之间心跳线链路故障,导致无法正常通信。
    1.心跳线坏了(包括断了,老化)。
    2.网卡即相关驱动坏了,IP配置及冲突问题(网卡直连)
    3.心跳线间连接的设备故障(网卡及交换机)

  • 高可用服务器对上开启了iptables防火墙阻挡了心跳信息传输。

  • 高可用服务器对上心跳网卡地址等信息配置不正确,导致发送心跳失败。

  • 其他服务器配置不当等原因,如心跳方式不同,心跳广播冲突,软件BUG

3 .解决方案

  • 同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。

  • 当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如fence,stonith)。相当于备节点接收不到心跳信息,发送关机命令通过单独的线路关闭主节点电源。

  • 做好对裂脑的监控报警(如邮件及手机短信等),在问题发生时人为的第一时间介入仲裁,降低损失。例如:百度的监控报警短信就有上行和下行的区别。报警信息到管理员手机上,就可以通过回复对应的字符串等操作就可以返回给服务器,让服务器根据指令自动执行处理相关故障

4.监测裂脑的脚本

原理:master主机能ping通且slave主机有VIP地址就是裂脑现象

#!/bin/sh
while true
do
ping -c 2 -W 3 192.168.27.167 &> /dev/null
if[$? -eq 0 -a `ip add|grep 192.168.27.160|wc -l` -eq 1]
  then
    echo "split brain....."
else
    echo "HA is ok"
fi
sleep 5
done
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!