高可用之裂腦問題

什麼是裂腦問題呢?bash

兩個節點互相認爲對方已掛掉,而後開始爭搶共享資源,結果會致使系統混亂,數據損壞。這就是腦裂問題。服務器

怎麼產生的呢?ui

  • 高可用服務器之間心跳線鏈路故障,致使沒法正常通訊。spa

    • 心跳線壞了(包括斷了,老化)。code

    • 網卡即相關驅動壞了,IP配置及衝突問題(網卡直連)blog

    • 心跳線間鏈接的設備故障(網卡及交換機)ip

    • 仲裁的機器出問題(採用仲裁的方案)。資源

  • 高可用服務器對上開啓了iptables防火牆阻擋了心跳信息傳輸。字符串

  • 高可用服務器對上心跳網卡地址等信息配置不正確,致使發送心跳失敗。string

  • 其餘服務器配置不當等緣由,如心跳方式不一樣,心跳廣播衝突,軟件BUG

解決方案

  • 同時使用串行電纜和以太網電纜鏈接,同時用兩條心跳線路,這樣一條線路壞了,另外一個仍是好的,依然能傳送心跳消息。

  • 當檢測到裂腦時強行關閉一個心跳節點(這個功能需特殊設備支持,如fence,stonith)。至關於備節點接收不到心跳信息,發送關機命令經過單獨的線路關閉主節點電源。

  • 作好對裂腦的監控報警(如郵件及手機短信等),在問題發生時人爲的第一時間介入仲裁,下降損失。例如:百度的監控報警短信就有上行和下行的區別。報警信息到管理員手機上,就能夠經過回覆對應的字符串等操做就能夠返回給服務器,讓服務器根據指令自動執行處理相關故障

參考文章:http://blog.51cto.com/dadonggg/1948737

實例:裂腦檢測腳本:

#!/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
複製代碼

若是能ping通另外一個主機,並且本地有vip地址,就是裂腦。

相關文章
相關標籤/搜索