《OpenStack高可用集群(上册):原理与架构》—3.4 Pacemaker内部组件

网友投稿 707 2022-05-30

3.4 Pacemaker内部组件

Pacemaker作为一个独立的集群资源管理器项目,其本身由多个内部组件构成,这些内部组件彼此之间相互通信协作并最终实现了集群的资源管理,Pacemaker项目由五个内部组件构成,

各个组件之间的关系如图3-8所示。

CIB:集群信息基础(Cluster Information Base)。

CRMd:集群资源管理进程(Cluster Resource Manager deamon)。

LRMd:本地资源管理进程(Local Resource Manager deamon)。

PEngine(PE):策略引擎(PolicyEngine)。

《OpenStack高可用集群(上册):原理与架构》—3.4 Pacemaker内部组件

STONITHd:集群Fencing进程(Shoot The Other Node In The Head deamon)。

CIB主要负责集群最基本的信息配置与管理,Pacemaker中的CIB主要使用XML的格式来显示集群的配置信息和集群所有资源的当前状态信息。CIB所管理的配置信息会自动在集群节点之间进行同步,PE将会使用CIB所提供的集群信息来规划集群的最佳运行状态。并根据当前CIB信息规划出集群应该如何控制和操作资源才能实现这个最佳状态,在PE做出决策之后,会紧接着发出资源操作指令,而PE发出的指令列表最终会被转交给集群最初选定的控制器节点(Designated Controller,DC),通常DC便是运行Master CRMd的节点。在集群启动之初,Pacemaker便会选择某个节点上的CRM进程实例来作为集群Master CRMd,然后集群中的CRMd便会集中处理PE根据集群CIB信息所决策出的全部指令集。在这个过程中,如果作为Master的CRM进程出现故障或拥有Master CRM进程的节点出现故障,则集群会马上在其他节点上重新选择一个新的Master CRM进程。

在PE的决策指令处理过程中,DC会按照指令请求的先后顺序来处理PEngine发出的指令列表,简单来说,DC处理指令的过程就是把指令发送给本地节点上的LRMd(当前节点上的CRMd已经作为Master在集中控制整个集群,不会再并行处理集群指令)或者通过集群消息层将指令发送给其他节点上的CRMd进程,然后这些节点上的CRMd再将指令转发给当前节点的LRMd去处理。当集群节点运行完指令后,运行有CRMd进程的其他节点会把他们接收到的全部指令执行结果以及日志返回给DC(即DC最终会收集全部资源在运行集群指令后的结果和状态),然后根据执行结果的实际情况与预期的对比,从而决定当前节点是应该等待之前发起的操作执行完成再进行下一步的操作,还是直接取消当前执行的操作并要求PEngine根据实际执行结果再重新规划集群的理想状态并发出操作指令。

在某些情况下,集群可能会要求节点关闭电源以保证共享数据和资源恢复的完整性,为此,Pacemaker引入了节点隔离机制,而隔离机制主要通过STONITH进程实现。STONITH是一种强制性的隔离措施,STONINH功能通常是依靠控制远程电源开关以关闭或开启节点来实现。在Pacemaker中,STONITH设备被当成资源模块并被配置到集群信息CIB中,从而使其故障情况能够被轻易地监控到。同时,STONITH进程(STONITHd)能够很好地理解STONITH设备的拓扑情况,因此,当集群管理器要隔离某个节点时,只需STONITHd的客户端简单地发出Fencing某个节点的请求,STONITHd就会自动完成全部剩下的工作,即配置成为集群资源的STONITH设备最终便会响应这个请求,并对节点做出Fenceing操作,而在实际使用中,根据不同厂商的服务器类型以及节点是物理机还是虚拟机,用户需要选择不同的STONITH设备。

OpenStack 云计算

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:物联网与大数据、云计算
下一篇:“解放号”携手华为软件开发云,开启软件开发智能时代
相关文章