一、Pacemaker概念
(1)Pacemaker(心臟起搏器),是一個高可用的群集資源管理器。它實現最大可用性資源管理的節點和資源級故障檢測和恢復,通過使用首選集群基礎設施(Corosync或Heartbeat)提供的消息和成員能力。 它可以監測並恢復節點和服務級別的故障,實現進程級高可用。它適合各種大小集群,可以編寫腳本,可以管理作為心臟起搏器集群的一部分。再次說明一下,pacemaker是個資源管理器,不是提供心跳信息的,因為它似乎是一個普遍的誤解,corosync/heartbeat的工作才是提供心跳信息。pacemaker是一個延續的CRM(亦稱Heartbeat V2資源管理器),最初是為心跳,但已經成為獨立的項目,例如下圖的Heartbeat3.0版本,pacemaker是其中的一個部分或者說是一個模塊,heartbeat同樣也是一個模塊,可以替換為corosync,各個模塊有各自的作用。
(2)Heartbeat3.0的組成部分
(3)Pacemaker內部結構
1、Pacemaker - 集群資源管理器(CRM),負責啟動和停止服務,而且保證它們是一直運行着的以及某個時刻某服務只在一個節點上運行(避免多服務同時操作數據造成的混亂),利用集群基礎構建提供的信息和成員管理能力,探測並恢復節點以及在其控制下的資源的失效切換,以實現高可用性。
2、Corosync - 消息層組件,管理成員關系、消息和仲裁。
3、Resource Agents - 資源代理,用來控制服務啟停,監控服務狀態的腳本集合,這些腳本將被LRM調用從而實現各種資源啟動、停止、監控等等。任何資源代理都要使用同一種風格,接收四個參數:{start|stop|restart|status},包括配置IP地址的也是。
- 社區活躍度:
- 配置復雜度:
- 管理資源的靈活性:
- Resource stickiness:
- 配置文件的版本管理:
- 分組管理


- 心跳:就是將多台服務器用網絡連接起來,而后每一台服務器都不停的將自己依然在線的信息使用很簡短很小的通告給同一個網絡中的其它主機,告訴它們自己依然在線,其它服務器收到這個心跳信息就認為它是在線的,尤其是主服務器。
- 心跳信息怎么發送,由誰來收,其實就是進程間通信。兩台主機是沒法通信的,只能利用網絡功能,通過進程監聽在某一套接字上,實現數據發送,數據請求,所以多台服務器就得運行同等的進程,這兩個進程不停的進行通信,主節點(主服務器)不停的向對方同等的節點發送自己的心跳信息,那這個軟件就叫高可用的集群的基准層次,也叫心跳信息傳遞層以及事物信息的傳遞層,這是運行在集群中的各節點上的進程,這個進程是個服務軟件,關機后需要將其啟動起來,主機間才可以傳遞信息的,一般是主節點傳給備節點
五、資源代理(Resource Agent - RA)
一個 RA 是管理一個集群資源的可執行程序,沒有固定其實現的編程語言,但是大部分RA都是用 shell 腳本實現的,Pacemaker 使用 RA 來和受管理資源進行交互,Pacemaker 支持三種類型的 RA: LSB Resource Agents、OCF Resource Agents、Legacy Heartbeat Resource Agents。
主流的 RA 都是 OCF 類型的。RA 支持的主要操作包括: start、stop、monitor、meta-data、status
(CIB 是個分布式的XML 文件,有用戶添加配置 Pacemaker 和 Corosync 根據 CIB 控制 LRMD 的行為 LRMD 通過調用 RA 的接口控制各資源的行為)