31.2. 手动移动集群资源
您可以覆盖集群并强制资源从其当前位置移动。当您要做到这一点时有两个问题:
- 当某个节点处于维护状态时,您需要将该节点上运行的所有资源移至不同节点
- 当需要移动单独指定的资源时
要将节点上运行的所有资源移动到另一个节点,需要使该节点处于待机模式。
您可以用下列方式之一移动独立指定的资源。
-
您可以使用
pcs resource move
命令将资源从当前运行的节点中移出。 -
您可以使用
pcs resource relocate run
命令将资源移至首选节点,具体由当前的集群状态、约束、资源位置和其他设置来决定。
31.2.1. 将资源从其当前节点移动
要将资源从其当前运行的节点上移出,请使用以下命令,指定定义的资源的 resource_id。如果要指定在哪个节点上运行您要移动的资源,请指定 destination_node
。
pcs resource move resource_id [destination_node] [--promoted] [--strict] [--wait[=n]]
执行 pcs resource move
命令时,这会向资源添加一个约束,以防止其在当前运行的节点上运行。默认情况下,在资源被移动后,命令创建的位置约束会被自动删除。如果删除约束将导致资源移回到原始节点,就像资源的 resource-stickiness
值为 0 才会发生的那样,那么 pcs resource move
命令将失败。如果您要移动资源并保留生成的约束,请使用 pcs resource move-with-constraint
命令。
如果您指定了 pcs resource move
命令的 --promoted
参数,则约束仅适用于提升资源实例。
如果您指定 pcs resource move
命令的 --strict
参数,则命令将失败,如果命令中指定的其他资源不受影响。
您可以选择为 pcs resource move
命令配置 --wait[=n] 参数
,以指示在返回 0(如果资源已启动)或 1(如果资源尚未启动)之前,在目标节点上等待资源启动的秒数。如果没有指定 n,则默认为 60 分钟。
31.2.2. 将资源移动到首选节点
由于故障转移或管理员手动移动节点,在资源移动后,即使解决了造成故障转移的情况,它也不一定会迁移到其原始的节点。要将资源重新定位到首选节点,请使用以下命令。首选节点由当前的集群状态、约束、资源位置和其他设置决定,并可能随时间变化。
pcs resource relocate run [resource1] [resource2] ...
如果没有指定任何资源,则所有资源都会重新定位到首选节点。
此命令在忽略资源粘性时为每个资源计算首选的节点。在计算首选节点后,它会创建位置限制,导致资源移至首选节点。移动资源后,这些限制会自动被删除。要删除由 pcs resource relocate run
命令创建的所有约束,您可以输入 pcs resource relocate clear
命令。要显示资源的当前状态及其忽略资源粘性的最佳节点,请输入 pcs resource relocate show
命令。