HeartBeat 集群元件概述

2021-09-22 20:51:53 字數 4333 閱讀 6091

通常使用集群方式實現,這也是集群的最大作用和體現。

其終極目標是確保服務實時可用,不會因為任意的軟硬體故障導致服務出現終止和不可用的情形。

系統的可靠性(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 是乙個基於linux開源的高可用集群系統。主要包括心跳服務和資源接管兩個高可用集群元件,其重大的版本變更主要分為三個階段。

heartbeat1.x允許集群節點和資源通過/etc/ha.d目錄下面的兩個檔案來配置

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

haresources:

定義集群資源組,每一行定義可以一起進行失效切換的乙個預設的節點和一組資源,資源包括ip位址,檔案系統,服務或者應用

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標準

*當服務失敗或者其中設定的標準滿足時,需要執行的動作

初級或第一層是訊息傳遞/基礎設施層,也被稱為心跳層。#author:leshami

此層包含了傳送含有「我還活著」訊號的心跳資訊,以及其他資訊的元件。

heartbeat程式駐留在訊息/基礎設施層。#blog:

成員層從底層即心跳層獲取資訊,負責計算集群節點的最大完全連線設定並同步到節點上的所有成員。

該層負責集群成員間的一致性,提供集群拓撲結構給上一層元件。

第三層是資源分配層。這一層是最複雜的,且由以下部分組成:

集群資源管理器(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保留的是本地節點上所有資源相關的資訊。

第四和最高層是資源層。資源層包括乙個或多​​個資源**(ra)。

資源**是乙個程式,通常是乙個shell指令碼,包含啟動,停止和監視某種服務(資源)。

最常見的資源**是lsb初始化指令碼。然而,heartbeat也支援更加靈活和強大的開放式集群架構資源**api。

提供心跳的**被寫入ocf規範。資源**只由本地資源管理器呼叫。

第三方可以在檔案系統中定義自己的**,整合自己的軟體到集群中。

在v3版本後,整個heartbeat專案進行了功能拆分,分為不同的子專案來分別進行開發。但是ha實現原理與heartbeat2.x基本相同,配置也基本一致。在v3版本後,被拆分為heartbeat、pacemaker(心臟起博器)、cluster-glue(集群的貼合器),架構分離開來了,可以結合其它的元件工作。

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

在群集中執行的任意行為將導致整個群集的更改。這些操作包括像新增或刪除集群資源或改變資源的限制。當執行這樣操作的時候,重要的是要了解集群中會發生什麼。

例如,假設需要新增乙個集群ip位址資源。要做到這一點,使用的cibadmin命令列工具或heartbeat gui工具來修改主cib。它不要求使用cibadmin命令或在指定協調器上的gui工具。你可以在集群中的任何節點上使用任何工具,本地的cib將重放的請求的更改到指定協調器。然後指定協調會複製cib變化到所有群集節點,並啟動轉換過程。

在策略引擎和過渡引擎的幫助下,指定協調器獲得的一系列需要在集群中完成的步驟,有可能在多個節點上的步驟。指定協調器通過訊息層向其他集群資源管理器傳送命令。

如果需要的話,其他的群集資源管理使用它們的本地資源管理器來執行資源的修改並返回其結果給指定協調器。一旦指定協調的上的te推斷出在集群中所有必須的操作已成功完成,集群將回到空閒狀態並等待進一步事件。

如果任何操作並沒有按計畫進行,該策略引擎再次呼叫記錄在cib中的新資訊。

當乙個服務或節點死亡,同樣的事情會發生。指定協調器會被集群一致成員服務(在乙個節點死亡)或本地資源管理通知(如遇失敗的監視器操作)。指定協調器需要確定將要變更到乙個新的群集狀態的行為。新的群集狀態將由乙個新的cib表示。

集群基礎 (heartbeat心跳元件)

集群間心跳 heartbeat heartbeat 3.0 4 2.el6.x86 64.rpm heartbeat devel 3.0 4 2.el6.x86 64.rpm heartbeat libs 3.0 4 2.el6.x86 64.rpmyum install y heartbeat 2...

高可用集群heartbeat和排程器

heartbeat ldirectord lvs server1 1 首先要保證lvs的正常執行 server1 ipvsadm c 清除策略 ip addr del 172.25.32.100 24 dev eth0 刪除虛擬ip ip addr 2 ldirectord的配置 ldirector...

TKE 集群組建最佳實踐

kubernetes 版本迭代比較快,新版本通常包含許多 bug 修復和新功能,舊版本逐漸淘汰,建議建立集群時選擇當前 tke 支援的最新版本,後續出新版本後也是可以支援 master 和節點的版本公升級的。globalrouter 模式架構 vpc cni 模式架構 網路模式對比 支援三種使用方式...