一、原因分析
1、目前架构分析图:
2、原因分析
由于平台业务网络不稳定,DRBD的心跳指向网关题导,在网络出现问题导致脑裂,出现脑裂有两种结果:
1、共享资源被瓜分、两边“服务”都起不来了;
2、两边“服务”都起来了,但同时读写“共享存储”,导致数据损坏
3、导致脑裂发生的原因
1、高可用服务器之间心跳链路故障,导致无法相互检查心跳
2、高可用服务器上开启了防火墙,阻挡了心跳检测
3、高可用服务器上网卡地址等信息配置不正常,导致发送心跳失败
4、其他服务配置不当等原因,如心跳方式不同,心跳广播冲突,软件BUG等
二、测试目的
通过使用一根专线作为心跳线,是否出现脑裂的两种情况及对服务的影响,改造后的结构图:
三、测试过程
1、停止MS上的心跳线
2、停止heartbeat服务
四、测试现象
1、停止心跳线,资源不发生切换,但外网无法通过VIP访问,内网正常,需要执行arp
2、停止S的上的服务(drbd,heartbeat)资源不切换,不对业务产生影响
3、停止M上的服务,资源正常切换(autofail=off)
4、DB服务停止,通过脚本检测,服务资源切换
5、MS一根心跳线时,S心跳停止恢复后会抢占资源,若可以添加两根直连线,可以避免
五、测试结果
使用专线作为心跳线,网络更加稳定,在写大量的数据时候,通过3层交换传输到对端,避免数据阻塞
六、测试建议
根据目前的平台业务架构,建议添加两根专线做为心跳线,提高网络的健壮性,避免因为心跳导致资源抢占或资源都放弃行为。
七、防止脑裂一些方案
1、加冗余线路
2、检测到裂脑时,强行关闭心跳检测(远程关闭主节点,控制电源的电路fence)
3、做好脑裂的监控报警
本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1868844