一、原因分析
1、目前架構分析圖:
<a href="http://s3.51cto.com/wyfs02/M02/89/B5/wKioL1gasQ6i4sKMAAU4ouVcKQE537.png-wh_500x0-wm_3-wmp_4-s_2563946043.png" target="_blank"></a>
2、原因分析
由于平台業務網絡不穩定,DRBD的心跳指向網關題導,在網絡出現問題導緻腦裂,出現腦裂有兩種結果:
1、共享資源被瓜分、兩邊“服務”都起不來了;
2、兩邊“服務”都起來了,但同時讀寫“共享存儲”,導緻資料損壞
3、導緻腦裂發生的原因
1、高可用伺服器之間心跳鍊路故障,導緻無法互相檢查心跳
2、高可用伺服器上開啟了防火牆,阻擋了心跳檢測
3、高可用伺服器上網卡位址等資訊配置不正常,導緻發送心跳失敗
4、其他服務配置不當等原因,如心跳方式不同,心跳廣播沖突,軟體BUG等
二、測試目的
<a href="http://s4.51cto.com/wyfs02/M00/89/B8/wKiom1gasTaiBQtbAAOOEm_V_MQ067.png-wh_500x0-wm_3-wmp_4-s_1446668340.png" target="_blank"></a>
通過使用一根專線作為心跳線,是否出現腦裂的兩種情況及對服務的影響,改造後的結構圖:
三、測試過程
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