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

1、什麼是Heartbeathtml

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

2、HeartBeat版本服務器

Heartbeat是Linux-HA工程的一個組件,自1999年開始到如今,發佈了衆多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內獲得了普遍的應用。網絡

隨着Linux在關鍵行業應用的逐漸增多,它必將提供一些原來由IBM和SUN這樣的大型商業公司所提供的服務,這些商業公司所提供的服務都有一個關鍵特性,就是高可用集羣。架構

高可用集羣是指一組經過硬件和軟件鏈接起來的獨立計算機,它們在用戶面前表現爲一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點中止工做,服務會從故障節點切換到正常工做的節點上運行,不會引發服務中斷。從這個定義能夠看出,集羣必須檢測節點和服務什麼時候失效,什麼時候恢復爲可用。這個任務一般由一組被稱爲"心跳"的代碼完成。在Linux-HA裏這個功能由一個叫作heartbeat的程序完成。app

    Heartbeat 是一個基於Linux開源的高可用集羣系統。主要包括心跳服務和資源接管兩個高可用集羣組件,其重大的版本變動主要分爲三個階段。工具

一、Heartbeat v1.x  測試

    heartbeat v1版時就有了資源管理的概念,而v1版的資源就是heartbeat自帶的,叫haresources,這個文件是個配置文件;而這個配置文件接口就叫haresources;spa

  • Heartbeat1.x容許集羣節點和資源經過/etc/ha.d目錄下面的兩個文件來配置 命令行

  • ha.cf:定義集羣節點,失效檢測和切換時間間隔,集羣時間日誌機制和節點Fence方法 

  • haresources: 定義集羣資源組,每一行定義能夠一塊兒進行失效切換的一個默認的節點和一組資源,資源包括IP地址,文件系統,服務或者應用

二、Heartbeat v2.x

    Heartbeat v2第二版的時候,heartbeat被作了很大的改進,本身能夠作爲一個獨立進程來運行,並而能夠經過它接收用戶請求,它就叫crm,在運行時它須要在各節點上運行一個叫crmd的進程,這個進程一般要監聽在一個套接字上,端口就是5560,因此服務器端叫crmd,而客戶端叫crm(能夠稱爲crm shell),是個命令行接口,經過這個命令行接口就能夠跟服務器端的crm通訊了,heartbeat也有它的圖形化界面工具,就叫heartbeat-GUI工具,經過這個界面就能夠配置進行。

    Heartbeat 2.0 在基於Heartbeat1.x 基礎上配置引入了模塊結構的配置方法,集羣資源管理器(Cluster Rescource Manager-CRM). 

    CRM模型能夠支持最多16個節點,這個模型使用基於XML的集羣信息(Cluster Information Base-CIB)配置。 
    Heartbeat 2.x官方最後一個STABLE release 2.x 版本是2.1.4。 

    CIB文件(/var/lib/heartbeat/crm/cib.xml)會在各個節點間自動複製,它定義了下面的對象和動做: 

  • 集羣節點 

  • 集羣資源,包括屬性,優先級,組和依賴性 

  • 日誌,監控,仲裁和fence標準 

  • 當服務失敗或者其中設定的標準知足時,須要執行的動做

三、Heartbeat v3.x

    在v3版本後,整個heartbeat項目進行了功能拆分,分爲不一樣的子項目來分別進行開發。可是HA實現原理與Heartbeat2.x基本相同,配置也基本一致。在v3版本後,被拆分爲heartbeat、pacemaker(心臟起博器)、cluster-glue(集羣的貼合器),架構分離開來了,能夠結合其它的組件工做。

  • Heartbeat:將原來的消息通訊層獨立爲heartbeat項目,新的heartbeat只負責維護集羣各節點的信息以及它們以前通訊;

  • Cluster Glue:至關於一箇中間層,它用來將heartbeat和pacemaker關聯起來,主要包含2個部分,即爲LRM和STONITH。

  • Resource Agent:用來控制服務啓停,監控服務狀態的腳本集合,這些腳本將被LRM調用從而實現各類資源啓動、中止、監控等等。

  • Pacemaker: 也就是Cluster Resource Manager (簡稱CRM),用來管理整個HA的控制中心,客戶端經過pacemaker來配置管理監控整個集羣。

    Heartbeat 3官方正式發佈的首個版本是3.0.2。原來以前的CRM管理由pacemaker來替代,底層message layer依舊可使用heartbeat v3也可使用corosync等。 其具體細節本文不作介紹,可單獨參考clusterlabs.org。

    pacemaker是個資源管理器,不是提供心跳信息的,由於它彷佛是一個廣泛的誤解,也是值得的。pacemaker是一個延續的CRM(亦稱Heartbeat V2資源管理器),最初是爲心跳,但已經成爲獨立的項目。

Pacemaker核心組件說明:

wKiom1Zo8MTTReG0AALpgJveWAY147.jpg - 1

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

  • crmd組件(Cluster Resource Manager,集羣資源管理器,也就是pacemaker):實現資源的分配,資源分配的每一個動做都要經過crm來實現,是核心組建,每一個節點上的crm都維護一個cib用來定義資源特定的屬性,哪些資源定義在同一個節點上。

  • cib組件(集羣信息基庫,Cluster Infonation Base):是XML格式的配置文件,在內存中的一個XML格式的集羣資源的配置文件,主要保存在文件中,工做的時候常駐在內存中而且須要通知給其它節點,只有DC上的cib才能進行修改,其餘節點上的cib都是拷貝DC上。配置cib文件的方法有,基於命令行配置和基於前臺的圖形界面配置。

  • lrmd組件(Local Resource Manager,本地資源管理器):用來獲取本地某個資源的狀態,而且實現本地資源的管理,如當檢測到對方沒有心跳信息時,來啓動本地的服務進程等。

  • pengine組件

        PE(Policy Engine):策略引擎,來定義資源轉移的一整套轉移方式,但只是作策略者,並不親自來參加資源轉移的過程,而是讓TE來執行本身的策略。

        TE(Transition Engine): 就是來執行PE作出的策略的而且只有DC上才運行PE和TE。

  • stonithd組件

        STONITH(Shoot The Other Node in the Head,」爆頭「), 這種方式直接操做電源開關,當一個節點發生故障時,另 一個節點若是能偵測到,就會經過網絡發出命令,控制故障節點的電源開關,經過暫時斷電,而又上電的方式使故障節點被重啓動, 這種方式須要硬件支持。

        STONITH應用案例(主從服務器),主服務器在某一端時間因爲服務繁忙,沒時間響應心跳信息,若是這個時候備用服務器一會兒把服務資源搶過去,可是這個時候主服務器尚未宕掉,這樣就會致使資源搶佔,就這樣用戶在主從服務器上都能訪問,若是僅僅是讀操做還沒事,要是有寫的操做,那就會致使文件系統崩潰,這樣一切都玩了,因此在資源搶佔的時候,能夠採用必定的隔離方法來實現,就是備用服務器搶佔資源的時候,直接把主服務器給STONITH,就是咱們常說的」爆頭 」。

       資源腳本(resource scripts)即Heartbeat控制下的腳本。這些腳本能夠添加或移除IP別名(IP alias)或從屬IP地址(secondary IP address),或者包含了能夠啓動/中止服務能力以外數據包的處理功能等。一般,Heartbeat會到/etc/init.d/或/etc/ha.d/resource.d/目錄中讀取腳本文件。Heartbeat須要一直明確瞭解"資源"歸哪一個節點擁有或由哪一個節點提供。在編寫一個腳原本啓動或中止某個資源時,必定在要腳本中明確判斷出相關服務是否由當前系統所提供。

3、Pacemaker特色

  • 主機和應用程序級別的故障檢測和恢復

  • 幾乎支持任何冗餘配置

  • 同時支持多種集羣配置模式

  • 配置策略處理法定人數損失(多臺機器失敗時)

  • 支持應用啓動/關機順序

  • 支持,必須/必須在同一臺機器上運行的應用程序

  • 支持多種模式的應用程序(如主/從)

  • 能夠測試任何故障或羣集的羣集狀態

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

相關文章
相關標籤/搜索