一 Heartbeat简介 1.1 概述
Heartbeat是Linux-HA项目中的一个组件,也是当前开源HA项目中最成功的一个例子,它提供了所有HA软件所需要的基本功能,如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享IP地址的所有者等。heartbeat最核心的功能包括两个部分,心跳监测和资源接管。心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
1.2 相关概念节点(node):运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和heartbeat软件服务,在heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。主节点上一般运行着一个或多个应用服务,而备用节点一般处于监控状态。
资源(resource):资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管,heartbeat中,可以当做资源的实体通常有:
磁盘分区、文件系统
IP地址
应用程序服务
NFS文件系统
事件(event):也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的。
动作(action):事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源。
1.3 Heartbeat 2.x组件Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能等等,目前的最新版本是Heartbeat3.x,Heartbeat 2.x内部组成主要分为以下几大部分:
heartbeat: 节点间通信检测模
Heartbeat支持通过以下网络链接类型进行群集通信:
单播UDP over IPv4;
广播UDP over IPv4;
多播UDP over IPv4;
串行链路通信。
ha-logd: 集群事件日志服务
CCM(Consensus Cluster Membership):集群成员一致性管理模块
CCM提供强关联的共识集群成员资格服务。它确保计算成员资格中的每个节点都可以与此相同成员资格中的每个其他节点进行通信。
LRM (Local Resource Manager):本地资源管理模块
Stonith Daemon: 使出现问题的节点从集群环境中脱离
CRM(Cluster resource management):集群资源管理模块
Cluster policy engine: 集群策略引擎
Cluster transition engine:集群转移引擎
1.4 Heartbeat 3.x组件
Heartbeat:将原来的消息通信层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信;
Cluster Glue:相当于一个中间层,它用来将heartbeat和pacemaker关联起来,主要包含2个部分,即为LRM和STONITH;
Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等;
Pacemaker:即Cluster Resource Manager(集群资源管理器,简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群;
Pacemaker 提供了多种用户管理接口,分别如下:
基于命令的管理方式
crmsh
pcs
基于图形界面的管理方式
pygui
hawk
LCMC
pcs
Pacemaker内部组件与模块
Heartbeat v3.x 内部组件
更多说明参考:
1.5 Heartbeat特性