首页 百科知识 的组成与原理

的组成与原理

时间:2022-10-11 百科知识 版权反馈
【摘要】:Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能。·Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突。针对这个问题,就需要在Linux内核中启用一个叫Watchdog的模块。在Linux中完成Watchdog功能的软件叫Softdog。CCM用于管理集群节点成员,同时管理成员之间的关系和节点间资源分配。Heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。

16.3 Heartbeat的组成与原理

学习目标

·了解Heartbeat的组成与原理

1.Heartbeat的组成

Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能。目前的最新版本是Heartbeat 2.x,这里的讲述也是以Heartbeat 2.x为主。下面介绍Heartbeat 2.x的内部组成,主要分为以下几大部分。

·Heartbeat:节点间通信检测模块。

·ha-logd:集群事件日志服务。

·CCM(Consensus Cluster Membership):集群成员一致性管理模块。

·LRM(Local Resource Management):本地资源管理模块。

·Stonith Daemon:使出现问题的节点从集群环境中脱离。

·CRM(Cluster Resource Management):集群资源管理模块。

·Cluster policy engine:集群策略引擎。

·Cluster transition engine:集群转移引擎。

图16-1显示了Heartbeat 2.0内部结构组成。

img563

图16-1 Heartbeat 2.0内部结构图

Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序。要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail,Mon和Ldirector等。Heartbeat自身包含了几个插件,分别是ipfail,Stonith和Ldirectord,介绍如下。

·ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并做出合理的反应。为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时做出转移措施。

·Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突。当一个节点失效后,会从集群中删除。如果不使用Stonith插件,那么失效的节点可能导致集群服务在多于一个节点运行,从而造成数据冲突甚至系统崩溃。因此,使用Stonith插件可以保证共享存储环境中的数据完整性。

·Ldirectord是一个监控集群服务节点运行状态的插件。Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务。这个插件经常用在LVS负载均衡集群中。关于Ldirector插件的使用,将在后续章节详细讲述。

同样,对于操作系统自身出现的问题,Heartbeat也无法监控。如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点转移无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。

针对这个问题,就需要在Linux内核中启用一个叫Watchdog的模块。Watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行。如果Watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。

在Linux中完成Watchdog功能的软件叫Softdog。Softdog维护一个内部计算器,此计时器在一个进程写入/dev/watchdog设备文件时更新。如果Softdog没有看到进程写入/dev/ watchdog文件,就认为内核可能出故障。Watchdog超时周期默认是一分钟,可以通过将Watchdog集成到Heartbeat中,从而用Heartbeat来监控系统是否正常运行。

2.Heartbeat的工作原理

从图16-1中可以看出,Heartbeat内部结构由三大部分组成。

(1)集群成员一致性管理模块(CCM)

CCM用于管理集群节点成员,同时管理成员之间的关系和节点间资源分配。Heartbeat模块负责检测主次节点的运行状态,以决定节点是否失效。Ha-logd模块用于记录集群中所有模块和服务的运行信息。

(2)本地资源管理器(LRM)

LRM负责本地资源的启动、停止和监控,一般由LRM守护进程lrmd和节点监控进程Stonich Daemon组成。lrmd守护进程负责节点间的通信;Stonith Daemon通常是一个Fence设备,主要用于监控节点状态,当一个节点出现问题时处于正常状态的节点会通过Fence设备将其重启或关机以释放IP、磁盘等资源,始终保持资源被一个节点拥有,防止资源争用的发生。

(3)集群资源管理模块(CRM)

CRM用于处理节点和资源之间的依赖关系,同时,管理节点对资源的使用,一般由CRM守护进程crmd、集群策略引擎和集群转移引擎3个部分组成。集群策略引擎(Cluster Policy Engine)具体实施这些管理和依赖;集群转移引擎(Cluster Transition Engine)监控CRM模块的状态,当一个节点出现故障时,负责协调另一节点上的进程进行合理的资源接管。

在Heartbeat集群中,最核心的是Heartbeat模块的心跳监测部分和集群资源管理模块的资源接管部分。心跳监测一般由串行接口通过串口线来实现,两个节点之间通过串口线相互发送报文来告诉对方自己当前的状态。如果在指定的时间内未受到对方发送的报文,就认为对方失效,这时资源接管模块将启动,用来接管运行在对方主机上的资源或服务。

图16-2是一个Heartbeat集群的一般拓扑图。在实际应用中,由于节点的数目、网络结构和磁盘类型配置的不同,拓扑结构可能会不同。

img564

图16-2 Heartbeat集群的一般拓扑图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈