Oracle RAC叢集腦裂split-brain概述及解決辦法
一、腦裂概述
# 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle10g RAC clusterware split-brain - 腦裂OracleAI
- 轉:瞭解Oracle RAC Brain Split Resolution叢集腦裂協議OracleAI協議
- split-brain 腦裂問題(Keepalived)AI
- HA叢集中的腦裂問題解決方案
- RAC腦裂的理解
- oracle rac asm 問題的官方解決辦法OracleASM
- RAC 腦裂 處理機制 Oracle RAC Brain SplitOracleAI
- Oracle 19C RAC腦裂問題分析Oracle
- drbd腦裂徹底解決
- 解決Spark叢集無法停止Spark
- ZooKeeper 05 - ZooKeeper 叢集的腦裂問題(Split Brain)AI
- HA腦裂問題解決方案
- 踩坑日誌--CEPH叢集常見問題解決辦法
- 如何檢視Oracle RAC叢集的叢集名稱(CLUSTER NAME)Oracle
- Oracle系列:Oracle RAC叢集體系結構Oracle
- 【ASK_ORACLE】Oracle RAC報錯“ipc send timeout”的原因以及解決辦法Oracle
- oracle RAC 診斷叢集狀態命令Oracle
- oracle 11g rac 叢集操作命令Oracle
- Oracle RAC叢集、程式、日誌簡介Oracle
- 3 安裝配置oracle叢集和RACOracle
- 【RAC】使用crsctl工具控制Oracle RAC叢集的啟停Oracle
- 【Redis叢集原理專題】分析一下相關的Redis叢集模式下的腦裂問題!Redis模式
- ORACLE RAC 11.2.0.4 FOR RHEL6叢集無法啟動的處理Oracle
- 電腦沒有聲音的解決辦法
- Oracle statspack無法收集快照,及解決辦法Oracle
- Oracle叢集(RAC)時間同步(ntp和CTSS)Oracle
- Oracle RAC 10g叢集節點增加Oracle
- Oracle10g RAC叢集基本命令Oracle
- 連線oracle錯誤解決辦法Oracle
- oracle 1455 錯誤解決辦法Oracle
- Oracle表碎片起因及解決辦法Oracle
- oracle imp過慢的解決辦法Oracle
- RAC更改叢集VIP
- 電腦無法啟動怎麼辦 電腦啟動不了的原因與解決辦法
- 關於Oracle RAC 叢集日誌無法輪循的問題處理Oracle
- Oracle 11g部分 RAC資源不隨機自啟動解決辦法Oracle隨機
- 電腦沒聲音怎麼辦?電腦沒聲音的解決辦法
- Redis運維實戰之叢集中的腦裂Redis運維