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
二、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)配置。 CIB文件(/var/lib/heartbeat/crm/cib.xml)會在各個節點間自動複製,它定義了下面的對象和動做:
三、Heartbeat v3.x 在v3版本後,整個heartbeat項目進行了功能拆分,分爲不一樣的子項目來分別進行開發。可是HA實現原理與Heartbeat2.x基本相同,配置也基本一致。在v3版本後,被拆分爲heartbeat、pacemaker(心臟起博器)、cluster-glue(集羣的貼合器),架構分離開來了,能夠結合其它的組件工做。
Heartbeat 3官方正式發佈的首個版本是3.0.2。原來以前的CRM管理由pacemaker來替代,底層message layer依舊可使用heartbeat v3也可使用corosync等。 其具體細節本文不作介紹,可單獨參考clusterlabs.org。 pacemaker是個資源管理器,不是提供心跳信息的,由於它彷佛是一個廣泛的誤解,也是值得的。pacemaker是一個延續的CRM(亦稱Heartbeat V2資源管理器),最初是爲心跳,但已經成爲獨立的項目。 Pacemaker核心組件說明:
PE(Policy Engine):策略引擎,來定義資源轉移的一整套轉移方式,但只是作策略者,並不親自來參加資源轉移的過程,而是讓TE來執行本身的策略。 TE(Transition Engine): 就是來執行PE作出的策略的而且只有DC上才運行PE和TE。
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特色
|