HeartBeat 集群组件概述
Heartbeat 是一個基于Linux開源的高可用集群系統。主要包括心跳服務和資源接管兩個高可用集群組件。心跳監測服務可以通過網絡鏈路和串口進行,而且支持冗余鏈路, 它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那么就認為對方失效,這時需啟動資源接管模塊來接管運行在對方主機上的資源或者服務。本文簡要描述了heartbeat v2集群架構組件及其相關概念,供大家參考。
一、高可用集群的特點
高可用服務
通常使用集群方式實現,這也是集群的最大作用和體現。 其終極目標是確保服務實時可用,不會因為任意的軟硬件故障導致服務出現終止和不可用的情形。度量標準
系統的可靠性(reliability)和可維護性(maintainability)來度量。 工程上,通常用平均無故障時間(MTTF)來度量系統的可靠性,用平均修復時間(MTTR)來度量系統的可維護性。計算公式,HA=MTTF/(MTTF+MTTR)*100%99% 全年停機時間不超過4天99.9% 全年停機時間不超過10小時99.99% 全年停機時間不超過1小時99.999% 全年停機時間不超過6分鐘集群節點
集群軟件必須包括一種機制來定義哪些系統的可用作集群節點(定義節點,2節點或以上)。 所有位于集群中的主機都稱為節點。集群服務與資源
哪些服務或應用程序可以在節點之間進行故障轉移,并互連可以在節點間傳送通信。 服務通常包括多種資源,多種資源組成某種服務。 如mysql高可用服務,則vip,mysqld,共享或鏡像磁盤等則為該服務所需要的資源。 對集群服務的管理,實際上是對資源的管理。資源隔離與腦裂
由于軟硬件故障導致節點宕機發生資源爭用,即出現故障節點或正常并存的情形。 在故障的節點控制相同的集群資源的情況下,實施資源隔離,防止腦裂發生(Fence機制,STONITH等)。集群狀態監控
通過集群管理和監控工具以及預定義的腳本來配置常見的服務或應用程序,監控,故障轉移等。 最為大家所熟知的如心跳,主要用于在集群環境中各節點之間相互感知對方的存在。 可以基于串口、多播、廣播和組播通信機制。一旦心跳失敗,則會發生相應的資源轉移,集群重構等動作。二、HeartBeat組件
Heartbeat 是一個基于Linux開源的高可用集群系統。主要包括心跳服務和資源接管兩個高可用集群組件,其重大的版本變更主要分為三個階段。
1、Heartbeat 1.x組件
Heartbeat1.x允許集群節點和資源通過/etc/ha.d目錄下面的兩個文件來配置
ha.cf:定義集群節點,失效檢測和切換時間間隔,集群時間日志機制和節點Fence方法
haresources:
定義集群資源組,每一行定義可以一起進行失效切換的一個默認的節點和一組資源,資源包括IP地址,文件系統,服務或者應用
2、Heartbeat 2.x組件
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標準
*當服務失敗或者其中設定的標準滿足時,需要執行的動作
消息傳遞和基礎設施層(Messaging and Infrastructure Layer)
初級或第一層是消息傳遞/基礎設施層,也被稱為心跳層。#Author:Leshami 此層包含了發送含有“我還活著”信號的心跳信息,以及其他信息的組件。 Heartbeat程序駐留在消息/基礎設施層。#Blog:http://blog.csdn.net/leshami成員層(Membership Layer)
成員層從底層即心跳層獲取信息,負責計算集群節點的最大完全連接設置并同步到節點上的所有成員。 該層負責集群成員間的一致性,提供集群拓撲結構給上一層組件。資源分配層(Resource Allocation Layer)
第三層是資源分配層。這一層是最復雜的,且由以下部分組成: 集群資源管理器(Cluster Resource Manager)在資源分配層的每一個動作由集群資源管理器管理。資源分配層的任意組件,或其他更高層的任何組件需要通信,則由本地集群資源管理器管理。在每一個節點上,集群資源管理器維護集群信息庫,或CIB(見下文集群信息庫)。集群中的一個節點會被選為指定協調器(DC),這意味著它具有主CIB。集群中的所有其他CIB是主CIB的副本。對CIB正常的讀寫操作都通過主CIB序列化。在集群中,DC可以決定一個群集范圍的變化需要執行的相關變更,如隔離一個節點或移動資源等。集群信息庫(Cluster Information Base) 集群信息庫或CIB是整個集群配置和狀態,包括節點成員,資源約束等,是一個駐留內存的XML文件。在集群中,有一個由DC維護的主CIB,所有其他節點包含一個CIB副本。如果管理員想管理集群,則可以使用cibadmin命令行工具或heartbeat GUI工具。heartbeat GUI工具可以用于從任何機器到集群的連接。cibadmin命令必須在集群節點上使用,并且不限制于只能在DC節點。策略引擎和轉換引擎(Policy Engine (PE) and Transition Engine (TE))每當指定協調器需要進行集群范圍的變化(重構新的CIB),策略引擎用于計算集群的下一個狀態和(資源)來實現它需要操作的列表。由策略引擎計算出的命令然后由轉換引擎執行。DC將向集群資源管理器發送相關信息,然后用自己的本地資源管理器(LRM),進行必要的資源操作。PE和TE必須成對運行在DC節點上。本地資源管理器LRM(Local Resource Manager)本地資源管理器調用本地資源代理代表CRM。因此它可以執行啟動/停止/監視操作并將結果報告給CRM。LRM保留的是本地節點上所有資源相關的信息。資源層(Resource Layer)
第四和最高層是資源層。資源層包括一個或多??個資源代理(RA)。 資源代理是一個程序,通常是一個shell腳本,包含啟動,停止和監視某種服務(資源)。 最常見的資源代理是LSB初始化腳本。然而,HeartBeat也支持更加靈活和強大的開放式集群架構資源代理API。 提供心跳的代理被寫入OCF規范。資源代理只由本地資源管理器調用。 第三方可以在文件系統中定義自己的代理,整合自己的軟件到集群中。3、Heartbeat 3.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。
三、heartbeat集群處理流程
在群集中執行的任意行為將導致整個群集的更改。這些操作包括像添加或刪除集群資源或改變資源的限制。當執行這樣操作的時候,重要的是要了解集群中會發生什么。
例如,假設需要添加一個集群IP地址資源。要做到這一點,使用的cibadmin命令行工具或Heartbeat GUI工具來修改主CIB。它不要求使用cibadmin命令或在指定協調器上的GUI工具。你可以在集群中的任何節點上使用任何工具,本地的CIB將重放的請求的更改到指定協調器。然后指定協調會復制CIB變化到所有群集節點,并啟動轉換過程。
在策略引擎和過渡引擎的幫助下,指定協調器獲得的一系列需要在集群中完成的步驟,有可能在多個節點上的步驟。指定協調器通過消息層向其他集群資源管理器發送命令。
如果需要的話,其他的群集資源管理使用它們的本地資源管理器來執行資源的修改并返回其結果給指定協調器。一旦指定協調的上的TE推斷出在集群中所有必須的操作已成功完成,集群將回到空閑狀態并等待進一步事件。
如果任何操作并沒有按計劃進行,該策略引擎再次調用記錄在CIB中的新信息。
當一個服務或節點死亡,同樣的事情會發生。指定協調器會被集群一致成員服務(在一個節點死亡)或本地資源管理通知(如遇失敗的監視器操作)。指定協調器需要確定將要變更到一個新的群集狀態的行為。新的群集狀態將由一個新的CIB表示。
總結
以上是生活随笔為你收集整理的HeartBeat 集群组件概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos 开放端口
- 下一篇: 使用FIT2CLOUD在青云QingCl