我目前被要求设置 Pacemaker Corosync,这对我来说是全新的。我目前有一个 2 节点集群。如果活动节点发生故障,我想要做的是重新分配 IP 给另一个节点。
所以看起来这样做的方法是创建一个资源代理。我已经阅读了一些关于创建 OCF 资源的教程。我已经阅读过 OCF 资源,似乎这些东西称为动作。我对动作不了解的是何时以及谁调用这些动作?
如果资源在主节点上运行,然后当主节点宕机时,资源会发生什么?它会自动在另一个节点上运行吗?
此外,由于我需要执行一些步骤以防调用某个操作,我如何检查我的脚本中调用了哪个操作,是否有变量?
有一个名为的包
resource-agents
,其中包含一堆 Pacemaker 常用的资源代理。IPaddr2
是其中之一,用于在集群中移动虚拟 IP。有关配置详细信息,您可以发出命令:pcs resource describe ocf:heartbeat:IPaddr2
如果您确实需要编写自己的资源代理(一个主题太深,无法在单个 StackExchange 答案中描述),那么您应该首先在
resource-agents
github 中阅读 OCF RA 开发指南: https ://github.com/ClusterLabs/resource -agents/blob/master/doc/dev-guides/ra-dev-guide.asc您想知道的是,pacemaker 不是备份节点获取故障节点配置的“节点故障转移”解决方案,而是“资源故障转移”解决方案,其中单个故障资源被移动到备份节点。
因此,您无需配置主机地址,而是配置服务地址(也称为浮动地址或动态地址)。处理此类地址的一种资源代理 (RA) 是
IPaddr2
. (通常,您可以使用类似的命令获取任何 RA 的描述crm ra info
,即:)crm ra info IPaddr2
。然后您必须配置您的实际(网络)资源以使用该动态地址。这样做你必须确保你的资源与你的 IP 地址在同一个节点上运行(称为colocation)。此外,您的资源应该在 IP 地址之后启动(称为ordering)。
资源组可以帮助确保没有共享资源的简单配置的托管和排序(例如:当多个服务使用相同的 IP 地址时)。
现在进行操作:一个节点(域控制器或指定的协调器(DC))运行集群资源管理器(crm),后者又使用节点上的本地资源管理器来执行操作。通常这些是
start
启动资源、monitor
检查资源状态(有时也称为probe
)和stop
停止资源(还有一些,但这些是基础)。如果资源未能停止,crm 会尝试隔离(射击头部中的另一个节点(STONITH))该节点以确保该节点上没有任何内容继续运行。STONITH 成功后,该资源(以及实际上受该节点的 STONITH 影响的所有其他资源)在另一个节点上启动。还有更多要说的,但这应该足以快速介绍。也许从从头开始的集群开始。