keepalived中的脑裂
? ? 在高可用(HA)系統(tǒng)中,當(dāng)聯(lián)系2個節(jié)點的“心跳線”斷開時,本來為一整體、動作協(xié)調(diào)的HA系統(tǒng),就分裂成為2個獨立的個體。由于相互失去了聯(lián)系,都以為是對方出了故障。兩個節(jié)點上的HA軟件像“裂腦人”一樣,爭搶“共享資源”、爭起“應(yīng)用服務(wù)”,就會發(fā)生嚴重后果——或者共享資源被瓜分、2邊“服務(wù)”都起不來了;或者2邊“服務(wù)”都起來了,但同時讀寫“共享存儲”,導(dǎo)致數(shù)據(jù)損壞(常見如數(shù)據(jù)庫輪詢著的聯(lián)機日志出錯)。
對付HA系統(tǒng)“裂腦”的對策,目前達成共識的的大概有以下幾條:
1)添加冗余的心跳線,例如:雙線條線(心跳線也HA),盡量減少“裂腦”發(fā)生幾率;
2)啟用磁盤鎖。正在服務(wù)一方鎖住共享磁盤,“裂腦”發(fā)生時,讓對方完全“搶不走”共享磁盤資源。但使用鎖磁盤也會有一個不小的問題,如果占用共享盤的一方不主動“解鎖”,另一方就永遠得不到共享磁盤。現(xiàn)實中假如服務(wù)節(jié)點突然死機或崩潰,就不可能執(zhí)行解鎖命令。后備節(jié)點也就接管不了共享資源和應(yīng)用服務(wù)。于是有人在HA中設(shè)計了“智能”鎖。即:正在服務(wù)的一方只在發(fā)現(xiàn)心跳線全部斷開(察覺不到對端)時才啟用磁盤鎖。平時就不上鎖了。
3)設(shè)置仲裁機制。例如設(shè)置參考IP(如網(wǎng)關(guān)IP),當(dāng)心跳線完全斷開時,2個節(jié)點都各自ping一下參考IP,不通則表明斷點就出在本端。不僅“心跳”、還兼對外“服務(wù)”的本端網(wǎng)絡(luò)鏈路斷了,即使啟動(或繼續(xù))應(yīng)用服務(wù)也沒有用了,那就主動放棄競爭,讓能夠ping通參考IP的一端去起服務(wù)。更保險一些,ping不通參考IP的一方干脆就自我重啟,以徹底釋放有可能還占用著的那些共享資源。
作者:慘綠少年?
出處:https://www.nmtui.com?
本文版權(quán)歸作者所有
轉(zhuǎn)載于:https://blog.51cto.com/37003839/2093493
總結(jié)
以上是生活随笔為你收集整理的keepalived中的脑裂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django+xadmin打造在线教育平
- 下一篇: Java反射机制——获取成员变量构造函数