HA cluster原理

高可用集群HA Cluster

集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。每一個單個的計算機系統都叫集群節點(node)。隨著業務的增長,集群通過添加新的節點,滿足資源的高可擴展性。

高可用集群,英文原文為High Availability Cluster,簡稱HA Cluster,簡單的說,集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統 就是集群的節點(node)。高可用性集群(HA cluster)是指如單系統一樣地運行并支持(計算機)持續正常運行的一個主機群。

HA=MTBF/(MTBF+MTTR)
MTBF:平均無故障時間;
MTTR:平均修復時間;
降低MTTR:通過冗余(redundant)實現;

具體HA衡量標準

  • 99% 一年宕機時間不超過4天
  • 99.9% 一年宕機時間不超過10小時
  • 99.99% 一年宕機時間不超過1小時
  • 99.999% 一年宕機時間不超過6分鐘

高可用集群解決手段

解決手段:冗余方案(redundant)

集群主機分為:active/passive(一主多備),active/active(雙主)

  • 主備方式
    集群中的節點以主備的方式運行,主機處于工作狀態,備機處于監控準備狀態;當主機出現宕機狀態時,備機接管主機的一切工作, 待主機恢復正常后,備機再根據事先設置的設定來決定是否把服務切換到主機上運行。
  • 雙主方式
    集群中的節點均已主機方式運行,互相之間同時運行維護各自的服務工作并相互檢測。當任意一臺主機宕機后,另一臺主機會接管它的一切工作,保證服務正常運行。

解決方案的開源軟件有:keepalived 、heartbeat、corosyns
一般采用奇數主機方案3/5/7個

高可用集群的層次結構

節點主機之間的通信層級
信息層(Messaging)

也叫底層基礎架構層,主要用于節點之間傳遞心跳信息,也稱為心跳層。節點之間傳遞心跳信息可以通過廣播,組播,單播等方式。

心跳信息:集群中每一臺服務器都不停的將自己在線的信息通告給集群中的其他主機。

心跳信息的傳遞是基于套接字通信的,通過軟件提供服務監聽套接字,實現數據發送、請求。必須安裝軟件,并開啟服務,這是實現高可用集群的基礎。

成員層(Membership)

這層最重要的作用是通過Cluster Consensus Menbership Service(CCM)這種服務由Messaging層提供的信息,來產生一個完整的成員關系。

CCM 組件(Cluster Consensus Menbership Service):作用,承上啟下,監聽底層接受的心跳信息,當監聽不到心跳信息的時候就重新計算整個集群的票數和收斂狀態信息,并將結果轉遞給上層,讓上層做出決定采取怎樣的措施。CCM 還能夠生成一個各節點狀態的拓撲結構概覽圖,以本節點做為視角,保證該節點在特殊情況下能夠采取對應的動作。

Messaging & Membership一般由同一軟件實現

資源分配層(Resource Allocation)

也叫資源管理器層,真正實現集群服務的層。包含CRM(集群資源管理器,cluster Resource Manager),CIB(集群信息基庫,Cluster Infonation Base),PE(策略引擎,Policy Engine),TE(實施引擎,Transition Engine),LRM(Local Resource Manager,本地資源管理器)。

CRM組件:核心組件,實現資源的分配和管理。每個節點上的CRM都維護一個CIB用來定義資源特定的屬性,哪些資源定義在同一個節點上。主節點上的CRM被選舉為DC(Designated Coordinator指定協調員,主節點掛掉會選出新的DC),成為管理者,它的工作是決策和管理集群中的所有資源。

任何DC上會額外運行兩個進程,一個叫PE,一個叫TE。
PE :定義資源轉移的一整套轉移方式,但只做策略,并不親自來參加資源轉移的過程,而是讓TE來執行自己的策略。
TE : 就是來執行PE做出的策略的并且只有DC上才運行PE和TE。

CIB組件:XML格式的配置文件,工作的時候常駐內存,只有DC才能對CIB進行修改,其他節點上的復制DC上的CIB而來。集群的所有信息都會反饋在CIB中。

LRM組件:是執行CRM傳遞過來的在本地執行某個資源的執行和停止的具體執行人。

在集群中構成一個完整服務的每一部分都叫資源,都需要配置和管理。
以web應用為例:vip是資源,web服務器是資源,存儲也是資源。不同的服務的資源也不盡相同,其中存儲資源的選擇、配置、管理是高可用集群中的難點問題。

資源代理層(Resource Agents)

集群資源代理,能夠管理本節點上的屬于集群資源的某一資源的啟動,停止和狀態信息的腳本,資源代理分為:LSB(/etc/init.d/*),OCF(比LSB更專業,更加通用)。
任何資源代理都要使用同一種風格,接收四個參數:{start|stop|restart|status},每個種資源的代理都要完成這四個參數據的輸出。

工作機制

PE根據CIB獲取資源的配置信息(集群上的所有信息都會收集到DC的CIB,同步到其它節點),而后做出決策,一旦做得決策就會進行資源的管理。PE借助于本地的CCM通知給其它節點CIB來實現對某些資源管理信息的傳遞,比如說通告其它CRM要啟動某一資源了,收到信息后CRM并不負責啟動,轉由LRM(Local Resource Manager本地資源管理)啟動,而并發資源又借助于RA(Resource Agent資源代理)實現資源管理。

故障切換過程:
Failover:故障切換,即某資源的主節點故障時,將資源轉移至其它節點的操作;
Failback:故障移回,即某資源的主節點故障后重新修改上線后,將轉移至其它節點的資源重新切回的過程;

STONITH(Shoot The Other Node in the Head,"爆頭")組件

這種機制直接操作電源開關,控制故障節點的電源開關,通過暫時斷電又上電的方式,使故障節點重啟,這種方式需要硬件支持。

主節點在某一端時間由于某種原因,沒時間傳遞心跳信息,這個時候集群會選取新的DC,從新分配資源提供服務,如果主節點服務器還沒有宕掉,這樣就會導致服務器分隔、資源爭用,這種情況被稱為腦裂(brain-split)。此時,用戶能訪問,一旦有寫的操作,就會導致文件系統崩潰,損失慘重。為避免這種情況,新的DC一旦產生,第一時間對主節點執行stonith,這種操作叫做資源隔離。

資源隔離
  • 節點級別:這種就叫STONITH,直接把對方的電源給切斷,一般這種主機都是連接到電源交換機上的。

  • 資源級別:同樣需要依賴一些硬件設備來完成。比如節點通過光纖交換機連接到共享存儲,通過把需要踢除出去的節點的光纖接口屏蔽來實現資源隔離。

仲裁設備
  • ping node:兩個節點的模式下,一旦其中一個節點發生故障,發生集群分隔以后,無法判定哪個節點不正常,但工作正常的節點一定是可以連到互聯網,故正常的節點是可以跟前端路由通信,所以可以把前端路由當成第三個節點,如果可以ping通,那就說明自己是正常的,可以將對方隔離掉。

  • qdisk::RHCS不是使用ping節點來判斷,而是使用一個共享存儲的設備,節點按照心跳信息頻率每隔一個信息頻率時間就往磁盤里寫一個數據位,如果設備每隔一個心跳時間間隔就更新一次數據位,就說明這個設備處于活動狀態的,可以將對方隔離掉。

參考文檔:https://blog.51cto.com/hoolee/1406951

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容