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