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

举报
华章计算机 发表于 2019/05/29 13:30:45 2019/05/29
【摘要】 本书摘自《OpenStack高可用集群(上册):原理与架构》一书中的第3章,第3.4节,作者是山金孝。

3.4 Pacemaker内部组件

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

image.png

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

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

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

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

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

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设备。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。