Red Hat Training

A Red Hat training course is available for RHEL 8

17.5. 在集群中移动资源

Pacemaker 提供了各种机制来将资源配置为从一个节点迁移到另一个节点,并在需要时手动移动资源。

您可以使用 pcs resource movepcs resource relocate 命令手动移动集群中的资源,如 手动移动集群资源 中所述。除了这些命令外,您还可以通过启用、禁用和禁止资源来控制集群资源的行为,如 禁用、启用和禁止集群资源 中所述。

您可以配置资源以便在定义多个故障后移到新节点,您可以在外部连接丢失时配置集群来移动资源。

17.5.1. 因为失败而移动资源

当您创建资源时,您可以通过为该资源设置 migration-threshold 选项来配置资源,使其在达到定义的故障次数后移至新节点。达到阈值后,这个节点将不再被允许运行失败的资源,直到:

  • 达到资源的 failure-timeout 值。
  • 管理员使用 pcs resource cleanup 命令手动重置资源的故障数。

migration-threshold 的值默认设置为 INFINITYINFINITY 在内部被定义为一个非常大的数,但是有限的。值 0 会禁用 migration-threshold 功能。

注意

为资源设置 migration-threshold 与为迁移配置资源不同,其中资源移动可以到另一个位置,而不会丢失状态。

以下示例为名为 dummy_resource 的资源添加了一个迁移阈值 10,这表示资源将在 10 次故障后移到一个新节点。

# pcs resource meta dummy_resource migration-threshold=10

您可以使用以下命令为整个集群的默认值添加迁移阈值。

# pcs resource defaults update migration-threshold=10

要确定资源当前的故障状态和限值,请使用 pcs resource failcount show 命令。

迁移阈值概念有两个例外,当资源无法启动或无法停止时会出现这种情况。如果集群属性 start-failure-is-fatal 设为 true (默认值),启动失败会导致 failcount 被设置为 INFINITY,并总是导致资源立即移动。

停止失败会稍有不同,且非常关键。如果资源无法停止且启用了 STONITH,则集群将隔离该节点,以便能够在其它地方启动资源。如果没有启用 STONITH,那么集群就无法继续,也不会尝试在其他位置启动资源,而是会在失败超时后尝试再次停止它。

17.5.2. 由于连接更改而移动资源

将集群设置为在外部连接丢失时移动资源分为两个步骤。

  1. 在集群中添加 ping 资源。ping 资源使用同名的系统工具来测试是否可以访问(由 DNS 主机名或 IPv4/IPv6 地址指定)一系列机器,并使用结果来维护名为 pingd 的节点属性。
  2. 为资源配置位置约束,该限制将在连接丢失时将资源移动到不同的节点。

下表描述了您可以为 ping 资源设置的属性。

表 17.1. ping 资源的属性

描述

dampen

等待(强化)时间进一步发生更改。这会防止,当集群节点在稍有不同的时间发现连接丢失时资源在集群中移动。

multiplier

连接的 ping 节点数量乘以这个值来获得分数。在配置了多个 ping 节点时很有用。

host_list

要联系的以确定当前连接状态的机器。允许的值包括可解析 DNS 主机名、IPv4 和 IPv6 地址。主机列表中的条目是空格分开的。

以下示例命令会创建一个 ping 资源,来验证与 gateway.example.com 的连接。在实践中,您可以验证到网络网关/路由器的连接。您可以将 ping 资源配置为克隆,以便资源可以在所有集群节点上运行。

# pcs resource create ping ocf:pacemaker:ping dampen=5s multiplier=1000 host_list=gateway.example.com clone

以下示例为名为 Webserver 的现有资源配置位置约束规则。如果当前运行的主机无法 ping gateway.example.com,这将导致 Webserver 资源移至能够 ping gateway.example.com 的主机。

# pcs constraint location Webserver rule score=-INFINITY pingd lt 1 or not_defined pingd