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