Oracle RAC叢集腦裂split-brain概述及解決辦法

chenfeng發表於2016-01-18

一、腦裂概述

# What does "split-brain" mean?
"Split brain" is a condition whereby two or more computers or groups of computers lose contact with one another but still act as if the cluster were intact. This is like having two governments trying to rule the same country. If multiple computers are allowed to write to the same file system without knowledge of what the other nodes are doing, it will quickly lead to data corruption and other serious problems.
        腦裂就是叢集內各節點間的心跳出現故障,但各節點還處於active狀態,多個節點分別接管服務並且寫入共享檔案資源導致資料損壞或者其它問題。


二、解決辦法

        小提一下冗餘心跳,但是該方式治標不治本,只能減少腦裂發生的概率。

1、踢出叢集

        (1)Quorum Algorithm

        Quorum Algorithm(選舉演算法):叢集內各節點通過心跳收集彼此的健康狀況,收集到一個心跳就獲得一票,假設叢集內3個節點(A、B、C),節點A獲得B和自己一票,節點B獲得自己和A一票,而節點C只有自己,則節點C被踢出叢集。

        (2)Quorum Device

        Quorum Algorithm有個缺陷:叢集內如果只有2個節點,那就悲劇了。因此,需要引入第3個裝置來解決此問題,此時,Quorum Device粉墨登場

        Quorum Device(Quorum Disk):這個裝置也佔一票,這一票由先到請求者獲得,這樣就能順利的踢出另一個節點。

2、IO隔離

        做了上面的操作後,很多人就開始穩坐釣魚臺了,實際,悲劇還在深海。節點雖然被踢出,但是仍然有可能處於active狀態,這樣,這傢伙還能操作共享檔案資源,危機依然揮之不去。銀彈來了,IO隔離(IO Fencing)可以阻止”灰太狼來羊村“。

        IO Fencing主要有兩種方式,分別如下:

        (1)硬體方式

                (A)SCSI Reserve/Release裝置

                正常節點能夠使用SCSI Reserve/Release命令鎖住儲存裝置,不正常節點發現儲存裝置被鎖後,就用suicide(自殺)的方式來了結自己以使自己恢復正常,純爺們兒。

                (B)STONITH(Shoot The Other Node In The Head)

                當一個節點發生故障時,另一個節點如果檢測到了,就會通過串列埠來控制故障節點的電源開關以暫時斷電然後又上電來重啟故障節點。手好黑啊,好在還沒徹底落井下石。

        (2)軟體方式

        ORACLE RAC就是典型代表,直接重啟故障節點以保證故障節點不能繼續訪問共享資料。具體可參考ORACLE,也可以參考這裡

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1978470/,如需轉載,請註明出處,否則將追究法律責任。

相關文章