heartbeat集羣組件概述(pacemaker)(二)

Heartbeat 是一個基於Linux開源的高可用集羣系統。主要包括心跳服務和資源接管兩個高可用集羣組件。心跳監測服務能夠經過網絡鏈路和串口進行,並且支持冗餘鏈路, 它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運行在對方主機上的資源或者服務。
web

4、Pacemaker集羣的分類安全

1.雙機熱備(Active/Passive)服務器

    官方說明:許多高可用性的狀況下,使用Pacemaker和DRBD的雙節點主/從集羣是一個符合成本效益的解決方案。網絡

wKiom1Zk_q3hJC36AAkudeOX0Bg826.png - 2

2.多節點熱備(N+1)app

    官方說明:支持多少節點,Pacemaker能夠顯着下降硬件成本經過容許幾個主/從羣集要結合和共享一個公用備份節點。ssh

wKiom1Zk_mXTQpnQAAlg_sFghuQ369.png - 3

3.多節點共享存儲(N-TO-N)代理

    官方說明:有共享存儲時,每一個節點可能被用於故障轉移。Pacemaker甚至能夠運行多個服務。rest

141329249.png - 4

4.共享存儲熱備 (Split Site)orm

    官方說明:Pacemaker 1.2 將包括加強簡化設立分站點集羣接口

wKioL1Zk_qLCawoaAAjxUZSdMyI692.png - 5

5、Pacemaker內部結構

wKioL1ZqtKvDye_EAAaw8884RCw016.png - 6

羣集組件說明:

  • stonithd:心跳系統。

  • lrmd:本地資源管理守護進程。它提供了一個通用的接口支持的資源類型。直接調用資源代理(腳本)。

  • pengine:政策引擎。根據當前狀態和配置集羣計算的下一個狀態。產生一個過渡圖,包含行動和依賴關係的列表。

  • CIB:羣集信息庫。包含全部羣集選項,節點,資源,他們彼此之間的關係和現狀的定義。同步更新到全部羣集節點。

  • CRMD:集羣資源管理守護進程。主要是消息代理的PEngine和LRM,還選舉一個領導者(DC)統籌活動(包括啓動/中止資源)的集羣。

  • OpenAIS:OpenAIS的消息和成員層。

  • Heartbeat:心跳消息層,OpenAIS的一種替代。

  • CCM:共識羣集成員,心跳成員層。

wKioL1Zqtk7yfOXkAAC5CEKyK9o811.jpg - 7

功能概述
    CIB使用XML表示集羣的集羣中的全部資源的配置和當前狀態。CIB的內容會被自動在整個集羣中同步,使用PEngine計算集羣的理想狀態,生成指令列表,而後輸送到DC(指定協調員)。Pacemaker 集羣中全部節點選舉的DC節點做爲主決策節點。若是當選DC節點宕機,它會在全部的節點上, 迅速創建一個新的DC。DC將PEngine生成的策略,傳遞給其餘節點上的LRMd(本地資源管理守護程序)或CRMD經過集羣消息傳遞基礎結構。當集羣中有節點宕機,PEngine從新計算的理想策略。在某些狀況下,可能有必要關閉節點,以保護共享數據或完整的資源回收。爲此,Pacemaker配備了stonithd設備。STONITH能夠將其它節點「爆頭」,一般是實現與遠程電源開關。Pacemaker會將STONITH設備,配置爲資源保存在CIB中,使他們能夠更容易地監測資源失敗或宕機。

6、heartbeat心跳傳遞

    HeartBeat運行於備用主機上的Heartbeat能夠經過以太網鏈接檢測主服務器的運行狀態,一旦其沒法檢測到主服務器的"心跳"則自動接管主服務器的資源。一般狀況下,主、備服務器間的心跳鏈接是一個獨立的物理鏈接,這個鏈接能夠是串行線纜、一個由"交叉線"實現的以太網鏈接。Heartbeat甚至可同時經過多個物理鏈接檢測主服務器的工做狀態,而其只要能經過其中一個鏈接收到主服務器處於活動狀態的信息,就會認爲主服務器處於正常狀態。從實踐經驗的角度來講,建議爲Heartbeat配置多條獨立的物理鏈接,以免Heartbeat通訊線路自己存在單點故障

  • 串行電纜:被認爲是比以太網鏈接安全性稍好些的鏈接方式,由於hacker沒法經過串行鏈接運行諸如telnet、ssh或rsh類的程序,從而能夠下降其經過已劫持的服務器再次侵入備份服務器的概率。但串行線纜受限於可用長度,所以主、備服務器的距離必須很是短。

  • 以太網鏈接:使用此方式能夠消除串行線纜的在長度方面限制,而且能夠經過此鏈接在主備服務器間同步文件系統,從而減小了從正常通訊鏈接帶寬的佔用。

    基於冗餘的角度考慮,應該在主、備服務器使用兩個物理鏈接傳輸heartbeat的控制信息;這樣能夠避免在一個網絡或線纜故障時致使兩個節點同時認爲自已經是惟一處於活動狀態的服務器從而出現爭用資源的狀況,這種爭用資源的場景便是所謂的"腦裂"(split-brain)或"partitioned cluster"。在兩個節點共享同一個物理設備資源的狀況下,腦裂會產生至關可怕的後果。

7、Heartbeat控制信息

  • "心跳"信息: (也稱爲狀態信息)僅150 bytes大小的廣播、組播或多播數據包。可爲以每一個節點配置其向其它節點通報"心跳"信息的頻率,以及其它節點上的heartbeat進程爲了確認主節點出節點出現了運行等錯誤以前的等待時間。

  • 集羣變更事務(transition)信息:ip-request和ip-request-rest是相對較常見的兩種集羣變更信息,它們在節點間須要進行資源遷移時爲不一樣節點上heartbeat進程間會話傳遞信息。好比,當修復了主節點而且使其從新"上線"後,主節點會使用ip-request要求備用節點釋放其此前從因主節點故障而從主節點那裏接管的資源。此時,備用節點則關閉服務並使用ip-request-resp通知主節點其已經再也不佔用此前接管的資源。主接點收到ip-request-resp後就會從新啓動服務。

  • 重傳請求:在某集羣節點發現其從其它節點接收到的heartbeat控制信息"失序"(heartbeat進程使用序列號來確保數據包在傳輸過程當中沒有被丟棄或出現錯誤)時,會要求對方從新傳送此控制信息。 Heartbeat通常每一秒發送一次重傳請求,以免洪泛。

    上面三種控制信息均基於UDP協議進行傳送,能夠在/etc/ha.d/ha.cf中指定其使用的UDP端口或者多播地址(使用以太網鏈接的狀況下)。

    此外,除了使用"序列號/確認"機制來確保控制信息的可靠傳輸外,Heartbeat還會使用MD5或SHA1爲每一個數據包進行簽名以確保傳輸中的控制信息的安全性。

若是想深刻體驗LINUX系統的新手,也能夠先下載一個方德Linux軟件中心試用一下。
免費下載地址:http://www.nfs-cloud.cn:81/appCenter/open/softcenter

相關文章
相關標籤/搜索