heartbeat腦裂問題

轉載自:http://czmmiao.iteye.com/blog/1180851 做者:czmmiaonode

關於腦裂咱們先來看看紅帽的文檔是如何解釋的
# 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.
Split-brain is prevented by enforcing quorum rules (which say that no group of nodes may operate unless they are in contact with a majority of all nodes) and fencing (which makes sure nodes outside of the quorum are prevented from interfering with the cluster).
在「雙機熱備」高可用(HA)系統中,當聯繫2個節點的「心跳線」斷開時,原本爲一總體、動做協調的HA系統,就分裂成爲2個獨立的個體。因爲相互失去了聯繫,都覺得是對方出了故障,2個節點上的HA軟件像「裂腦人」同樣,「本能」地爭搶「共享資源」、爭起「應用服務」,就會發生嚴重後果:或者共享資源被瓜分、2邊「服務」都起不來了;或者2邊「服務」都起來了,但同時讀寫「共享存儲」,致使數據損壞(常見如數據庫輪詢着的聯機日誌出錯)。
運行於備用主機上的Heartbeat能夠經過以太網鏈接檢測主服務器的運行狀態,一旦其沒法檢測到主服務器的「心跳」則自動接管主服務器的資源。一般狀況下,主、備服務器間的心跳鏈接是一個獨立的物理鏈接,這個鏈接能夠是串行線纜、一個由「交叉線」實現的以太網鏈接。Heartbeat甚至可同時經過多個物理鏈接檢測主服務器的工做狀態,而其只要能經過其中一個鏈接收到主服務器處於活動狀態的信息,就會認爲主服務器處於正常狀態。從實踐經驗的角度來講,建議爲Heartbeat配置多條獨立的物理鏈接,以免Heartbeat通訊線路自己存在單點故障。
一、串行電纜:被認爲是比以太網鏈接安全性稍好些的鏈接方式,由於hacker沒法經過串行鏈接運行諸如telnet、ssh或rsh類的程序,從而能夠下降其經過已劫持的服務器再次侵入備份服務器的概率。但串行線纜受限於可用長度,所以主、備服務器的距離必須很是短。
二、以太網鏈接:使用此方式能夠消除串行線纜的在長度方面限制,而且能夠經過此鏈接在主備服務器間同步文件系統,從而減小了從正常通訊鏈接帶寬的佔用。
基於冗餘的角度考慮,應該在主、備服務器使用兩個物理鏈接傳輸heartbeat的控制信息;這樣能夠避免在一個網絡或線纜故障時致使兩個節點同時認爲自已經是惟一處於活動狀態的服務器從而出現爭用資源的狀況,這種爭用資源的場景便是所謂的「腦裂」(split-brain)或「partitioned cluster」。在兩個節點共享同一個物理設備資源的狀況下,腦裂會產生至關可怕的後果。
爲了不出現腦裂,可採用下面的預防措施:
添加冗餘的心跳線,例如雙線條線。儘可能減小「裂腦」發生機會。
啓用磁盤鎖。正在服務一方鎖住共享磁盤,「裂腦」發生時,讓對方徹底「搶不走」共享磁盤資源。但使用鎖磁盤也會有一個不小的問題,若是佔用共享盤的一方不主動「解鎖」,另外一方就永遠得不到共享磁盤。現實中假如服務節點忽然死機或崩潰,就不可能執行解鎖命令。後備節點也就接管不了共享資源和應用服務。因而有人在HA中設計了「智能」鎖。即,正在服務的一方只在發現心跳線所有斷開(察覺不到對端)時才啓用磁盤鎖。平時就不上鎖了。
設置仲裁機制。例如設置參考IP(如網關IP),小心跳線徹底斷開時,2個節點都各自ping一下 參考IP,不通則代表斷點就出在本端,不只「心跳」、還兼對外「服務」的本端網絡鏈路斷了,即便啓動(或繼續)應用服務也沒有用了,那就主動放棄競爭,讓可以ping通參考IP的一端去起服務。更保險一些,ping不通參考IP的一方乾脆就自我重啓,以完全釋放有可能還佔用着的那些共享資源。
數據庫


參考至:http://surpassdream.blog.51cto.com/1347340/284974安全

相關文章
相關標籤/搜索