Pages

2008年6月14日

[ Cluster ] Split brain,腦分裂

叢集運算(cluster)中,其中一種應用「高可靠度」(High Availability,簡稱 HA)中,一種錯誤情形。



模擬情境:
    兩台伺服器組成一個叢集群組(cluster group)
    兩台伺服器連結到一個共享磁碟(shared disk)
    兩台伺服器上面運行的應用程式共同存取位於共享磁碟上的相同資料

解說:
所謂的腦分裂(split brain),是指位於同一個叢集群組中的伺服器彼此之間的心跳通訊(heartbeat)斷訊,導致伺服器們無法協商資料的讀寫,而造成各自運作的情況。

腦分裂危險的情況在於,假設 serverA 現在收到了一筆更新共享磁碟中的資料的需求(request),結果可能某些原因使得 serverA 目前繁忙,暫時沒有處理到這筆需求;之後 serverB 也收到更新同一筆資料的需求,但是 serverB 迅速的處理了這筆需求後,serverA 才有空處理需求,結果造成該筆資料變成較舊的內容,或是更糟糕的是,在 serverB 處理的同時,serverA 也同時處理,結果造成資料損毀。

或者是,由於伺服器們無法溝通,因此可能都會認為另外一台伺服器現在應該處於死亡狀態(也就是無法處理需求),所以會開始將共享磁碟或是其他共享資源強奪給自己(以繼續維護服務運行),結果共享資源不停的被兩台搶奪。

腦分裂狀況會造成服務無法正常運行,資料錯誤或損毀。

實際上,不只兩台,甚至在多台伺服器的情況都會發生這種問題。所以腦分裂是 HA 服務中必須解決的問題。

沒有留言: