1. 簡介shell
Pacemaker是一個集羣資源管理者。他用資源級別的監測和恢復來保證集羣服務(aka.資源)的最大可用性。它能夠用你所擅長的基礎組件(Corosync或者是Heartbeat)來實現通訊和關係管理。架構
2. 特性分佈式
Pacemaker包含如下的關鍵特性:工具
- 監測並恢復節點和服務級別的故障
- 存儲無關,並不須要共享存儲
- 資源無關,任何能用腳本控制的資源均可以做爲服務來管理
- 支持使用STONITH來保證數據一致性。
- 支持大型或者小型的集羣
- 支持quorate(法定人數) 或 resource(資源) 驅動的集羣
- 支持幾乎全部的冗餘配置,包括Active/Active, Active/Passive, N+1, N+M, N-to-1 and N-to-N
- 自動同步各個節點的配置文件
- 能夠設定集羣範圍內的ordering, colocation , anti-colocation約束
- 支持更多高級服務類型:支持須要在多個節點運行的服務,支持須要多種模式的服務。(好比 主/從,主/備)
- 統一的,腳本化的,cluster shell
3. 架構spa
1) 集羣組成
一個HA集羣的高層架構由三個部分組成 :.net
- Messaging & Membership部分是基礎核心,負責消息傳遞以及集羣中的成員關係管理;
- CRM部分是集羣的大腦,負責對集羣(節點的加入或退出)和資源(失效監測)的各類事件作出反應和決策;
- LRM及RS是直接和服務相關的底層組件,CRM調用LRM來管理資源,而LRM調用RS來和具體的服務打交道。
2) 支持的集羣架構
由Pacemaker的介紹咱們知道Pacemaker支持使用Corosync(即Openais)或者是Heartbeat來實現通訊和關係管理。代理
Pacemaker&Openaisorm
Pacemaker&Heartbeat接口
當與Corosync集成時,Pacemaker也支持常見的開源集羣文件系統,根據來着集羣文件系統社區的最新標準,他們用一個通用的分佈式鎖控制器,它靠Corosync通訊而且用Pacemaker管理成員關係(哪些節點是開啓或關閉的)和隔離服務。 儘管Pacemaker也支持Heartbeat,可是文件系統也要用基層軟件來通訊和維護節點關係,Corosync看來是他們的標準,技術上來講,讓它們支持Heartbeat也是可能的,可是看起來他們沒多大興趣 。進程
4. 內部組件
- lrmd(local resource manager demaon):本地資源管理守護進程(非集羣感知守護進程),提供一個統一的接口去支持不一樣的資源類型,直接與Resource agents(腳本)交互.
- ccm(consensus cluster membership):CCM的最主要工做就是管理集羣中各個節點的成員以及各成員之間的關係。他讓集羣中各個節點有效的組織稱一個總體,保持着穩定的鏈接。
- heartbeat:心跳消息層(能夠被OpenAIS替代),heartbeat模塊所擔當的只是一個通訊工具,而CCM是經過這個通訊工具來將各個成員鏈接到一塊兒成爲一個總體。
- openais:指OpenAIS的消息和成員層。
Pacemaker 本身由如下4 個關鍵組件組成:
- pengine(PE or Policy EnginePE 或者策略引擎):主要負責將CRM發過來的一些信息按照配置文件中的各類設置(基於目前的狀態和配置)計算集羣的下一個狀態。產生一個包括一系列行動和依賴關係的過渡圖。
- stonithd(Shoot-The-Other-Node-In-The-Head ):一般用遠程電源開關來充當。在 Pacemaker 中,STONITH設備被當成資源(而且是在CIB中配置)從而輕鬆地監控,然而Stonithd會注意理解STONITH拓撲,好比它的客戶端請求隔離一個節點,它會重啓那個機器。
- crmd(Cluster Resource Management daemon 集羣資源管理守護進程):主要做爲pengine和lrm的消息代理,它同時也得選舉一個leader去協調管理集羣的活動(包括集羣資源的中止和啓動)
- cib(Cluster Information Base 集羣信息基礎):CIB在系統中充當的是當前集羣中各資源原始配置以及以後動態變化了的狀態,統計信息收集分發中心,是一個不斷更新的信息庫(包含全部羣集選項,節點,資源以及他們的相互關係和當前狀態的定義)。當他收集到任何資源的變化,以及節點統計信息的變化後,都會集成整合到一塊兒組成當前集羣最新的信息,並分發到集羣各個節點。
5. 應用
由Pacemaker的特性咱們知道Pacemaker對環境的要求不高,支持幾乎全部的冗餘配置,包括Active/Active, Active/Passive ,N+1, N+M, N-to-1 and N-to-N ,如下是常見的幾種配置例子。
使用Pacemaker和DRBD的雙節點主備方案做爲一種經濟的解決方案被不少高可用環境所採用。
支持多個節點,容許多個Active/Passive集羣共享一個共同的備份節點, Pacemaker能夠大幅下降硬件成本。
共享存儲時,每一個節點均可以被用於故障切換。Pacemaker甚至能夠運行服務的多個副原本展開工做量。
Pacemaker1.2在簡化分站點集羣的搭建方面有了進一步的加強。