一、 heartbeat的概念
Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案.其中Heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用,也发行了很多的版本,可以从Linux-HA的官方网站www.linux-ha.org下载到Heartbeat的最新版本.
二、 HA集群中的相关术语
1.节点(node)
运行heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和heartbeat软件服务,在heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等.主节点上一般运行着一个或多个应用服务.而备用节点一般处于监控状态.
2.资源(resource)
资源是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其它节点接管,heartbeat中,可以当做资源的实体有:
磁盘分区、文件系统
IP地址
应用程序服务
NFS文件系统
3.事件(event)
也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障、应用程序故障等.这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件来进行的.
4.动作(action)
事件发生时HA的响应方式,动作是由shell脚步控制的,例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动.进而接管故障节点的资源.
三、 Heartbeat的组成与原理
1.Heartbeat的组成
Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能等等,目前的最新版本是Heartbeat2.x,这里的讲述也是以Heartbeat2.x为主,下面介绍Heartbeat2.0的内部组成,主要分为以下几大部分:
heartbeat: 节点间通信检测模块
ha-logd: 集群事件日志服务
CCM(Consensus Cluster Membership):集群成员一致性管理模块
LRM (Local Resource Manager):本地资源管理模块
Stonith Daemon: 使出现问题的节点从集群环境中脱离
CRM(Cluster resource management):集群资源管理模块
Cluster policy engine: 集群策略引擎
Cluster transition engine:集群转移引擎
图1显示了Heartbeat2.0内部结构组成:
Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常,使用第三方的插件,例如ipfail、Mon、Ldirector等.Heartbeat自身包含了几个插件,分别是ipfail、Stonith和Ldirectord,介绍如下:
ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并作出合理的反应,为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时的做出转移措施.
Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突,当一个节点失效后,会从集群中删除,如果不使用Stonith插件,那么失效的节点可能会导致集群服务在多于一个节点运行,从而造成数据冲突甚至是系统崩溃.因此,使用Stonith插件可以保证共享存储环境中的数据完整性.
|