Pacemaker(直译:心脏起搏器)是一个集群资源管理器。它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。

由来

Heartbeat 到了V3版本后,拆分为多个项目,其中pacemaker就是拆分出来的资源管理器。

  • Heartbeat 3.0拆分之后的组成部分:
  • Heartbeat:将原来的消息通信层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信;
  • Cluster Glue:相当于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH。
  • Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。
  • Pacemaker : 也就是Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。


pacemaker 特点

  • 主机和应用程序级别的故障检测和恢复
  • 几乎支持任何冗余配置
  • 同时支持多种集群配置模式
  • 配置策略处理法定人数损失(多台机器失败时)
  • 支持应用启动/关机顺序
  • 支持,必须/必须在同一台机器上运行的应用程序
  • 支持多种模式的应用程序(如主/从)
  • 可以测试任何故障或群集的群集状态

注:说白了意思就是功能强大,现在最主流的资源管理器。


pacemaker 软件包供应商

目前pacemaker支持主流的操作系统,

  • Fedora(12.0)
  • 红帽企业Linux(5.0,6.0)
  • openSUSE(11.0)
  • Debian
  • Ubuntu的LTS(10.4)
  • CentOS (5.0,6.0)


架构


集群组成


一个HA集群的高层架构由三个部分组成 :


  •    Messaging & Membership部分是基础核心,负责消息传递以及集群中的成员关系管理;
  •    CRM部分是集群的大脑,负责对集群(节点的加入或退出)和资源(失效监测)的各种事件做出反应和决策;
  •    LRM及RS是直接和服务相关的底层组件,CRM调用LRM来管理资源,而LRM调用RS来和具体的服务打交道。 

支持的集群架构


由Pacemaker的介绍我们知道Pacemaker支持使用Corosync(即Openais)或者是Heartbeat来实现通信和关系管理。


什么是AIS和OpenAIS?

AIS是应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放、高移植性的程序接口。是在实现高可用应用过程中是亟需的。服务可用性论坛(SA Forum)是一个开放性论坛,它开发并发布这些免费规范。使用AIS规范的应用程序接口(API),可以减少应用程序的复杂性和缩短应用程序的开发时间,这些规范的主要目的就是为了提高中间组件可移植性和应用程序的高可用性。

OpenAIS是基于SA Forum 标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,集群监测等,能够为集群软件或工具提供满足 AIS标准的集群接口,但是它没有集群资源管理功能,不能独立形成一个集群。

corosync简介

corosync最初只是用来演示OpenAIS集群框架接口规范的一个应用,可以说corosync是OpenAIS的一部分,但后面的发展明显超越了官方最初的设想,越来越多的厂商尝试使用corosync作为集群解决方案。如Redhat的RHCS集群套件就是基于corosync实现。

corosync只提供了message layer,而没有直接提供CRM,一般使用Pacemaker进行资源管理。




基于OpenAIS的集群

Pacemaker&Openais

 传统集群架构,基于心跳信息

Pacemaker&Heartbeat


当与Corosync集成时,Pacemaker也支持常见的开源集群文件系统,根据来着集群文件系统社区的最新标准,他们用一个通用的分布式锁控制器,它靠Corosync通信并且用Pacemaker管理成员关系(哪些节点是开启或关闭的)和隔离服务。 尽管Pacemaker也支持Heartbeat,但是文件系统也要用基层软件来通信和维护节点关系,Corosync看来是他们的标准,技术上来说,让它们支持Heartbeat也是可能的,但是看起来他们没多大兴趣 。

内部组件



  • 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在系统中充当的是当前集群中各资源原始配置以及之后动态变化了的状态,统计信息收集分发中心,是一个不断更新的信息库(包含所有群集选项,节点,资源以及他们的相互关系和当前状态的定义)。当他收集到任何资源的变化,以及节点统计信息的变化后,都会集成整合到一起组成当前集群最新的信息,并分发到集群各个节点。 

应用


由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在简化分站点集群的搭建方面有了进一步的增强。

pacemaker 源代码组成


Pacemaker主要是由C语言写的,其次是Python,说明其效率非常高