Red Hat Training

A Red Hat training course is available for RHEL 8

31.2. 手动移动集群资源

您可以覆盖集群并强制资源从其当前位置移动。当您要做到这一点时有两个问题:

  • 当某个节点处于维护状态时,您需要将该节点上运行的所有资源移至不同节点
  • 当需要移动单独指定的资源时

要将节点上运行的所有资源移动到另一个节点,需要使该节点处于待机模式。

您可以用下列方式之一移动独立指定的资源。

  • 您可以使用 pcs resource move 命令将资源从当前运行的节点中移出。
  • 您可以使用 pcs resource relocate run 命令将资源移至首选节点,具体由当前的集群状态、限制、资源位置和其他设置决定。

31.2.1. 将资源从其当前节点移动

要将资源从当前运行的节点中移动,请使用以下命令,指定定义的 resource_id。如果要指定在哪个节点上运行您要移动的资源,请指定 destination_node

pcs resource move resource_id [destination_node] [--master] [lifetime=lifetime]
注意

运行 pcs resource move 命令时,这会为资源添加约束,以防止资源在其当前运行的节点上运行。从 RHEL 8.6 开始,您可以为此命令指定 --autodelete 选项,这将导致在资源移动后,这个命令所创建的位置约束将自动被删除。对于早期版本,您可以运行 pcs resource clearpcs constraint delete 命令来手动删除约束。移除约束不一定将资源重新移回原始节点; 此时资源可以在哪里运行取决于您最初是如何配置资源的。

如果您指定了 pcs resource move 命令的 --master 参数,则约束仅适用于提升的资源实例。

您可选择为 pcs resource move 命令配置 lifetime 参数,以指示约束应保留的时间。根据 ISO 8601 中定义的格式来指定 lifetime 参数的单位,它要求您将单位指定为一个大写字母,例如 Y(年)、M(月)、W(周)、D(天)、H(小时)、M(分钟)和 S(秒)。

为了将分钟(M)与月(M)区分开,需要在分钟值前添加 PT 来指定。例如,lifetime 参数为 5M 表示 5 个月的间隔,而 lifetime 参数为 PT5M 则表示间隔为 5 分钟。

以下命令将资源 resource1 移到节点 example-node2,并防止它重新移至最初在其上运行了 1 小时 30 分钟的节点。

pcs resource move resource1 example-node2 lifetime=PT1H30M

以下命令将资源 resource1 移到节点 example-node2,并防止它重新移至最初在其上运行了 30 分钟的节点。

pcs resource move resource1 example-node2 lifetime=PT30M

31.2.2. 将资源移动到首选节点

由于故障转移或管理员手动移动节点,在资源移动后,即使解决了造成故障转移的情况,它也不一定会迁移到其原始的节点。要将资源重新定位到首选节点,请使用以下命令。首选节点由当前的集群状态、约束、资源位置和其他设置决定,并可能随时间变化。

pcs resource relocate run [resource1] [resource2] ...

如果没有指定任何资源,则所有资源都会重新定位到首选节点。

此命令在忽略资源粘性时为每个资源计算首选的节点。在计算首选节点后,它会创建位置限制,导致资源移至首选节点。移动资源后,这些限制会自动被删除。要删除由 pcs resource relocate run 命令创建的所有限制,您可以输入 pcs resource relocate clear 命令。要显示资源的当前状态及其最佳节点忽略资源粘性,请输入 pcs resource relocate show 命令。