Red Hat Training

A Red Hat training course is available for RHEL 8

第 13 章 Colocating 集群资源

要指定一个资源的位置取决于另一个资源的位置,您需要配置 colocation 约束。

在两个资源间创建 colocation 约束具有重要的副作用:它会影响分配给节点资源的顺序。这是因为您无法相对于资源 B 来放置资源 A,除非您知道资源 B 的位置。因此,当创建 colocation 约束时,您必须考虑是将资源 A 与资源 B 共处,还是将资源 B 与资源 A 共处。

在创建 colocation 约束时要记住的是,假设资源 A 与资源 B 在一起,在决定哪个节点要选择资源 B 时,集群也会考虑资源 A 的首选项。

以下命令创建了 colocation 约束。

pcs constraint colocation add [master|slave] source_resource with [master|slave] target_resource [score] [options]

下表总结了配置 colocation 约束的属性和选项。

表 13.1. Colocation 约束的参数

参数描述

source_resource

colocation 源。如果约束不满意,集群可能决定完全不允许该资源运行。

target_resource

colocation 目标。集群将决定优先放置此资源的位置,然后决定放置源资源的位置。

分数

正数值表示资源应该在同一个节点上运行。负值表示资源不应在同一节点上运行。值 +INFINITY (默认值)表示 source_resource 必须在与 target_resource 相同的节点上运行。值 -INFINITY 表示 source_resource 不得在与 target_resource 相同的节点上运行。

影响 选项

(RHEL 8.4 及更新的版本)决定集群是否会在依赖资源达到其故障迁移阈值时将主资源(source_resource )和依赖资源( target_resource)移动到另一个节点,或者集群是否会在不造成服务切换的情况下将依赖资源离线。

影响 colocation 约束选项的值可以是 truefalse。这个选项的默认值由相依 资源 meta 选项的值决定,该选项的默认值为 true

当这个选项的值为 true 时,Pacemaker 将尝试使主资源和依赖资源都处于活跃状态。如果依赖资源出现故障,两个资源都会移到另一个节点。

当这个选项的值为 false 时,Pacemaker 会避免因为依赖资源的状态而移动主资源。在这种情况下,如果依赖资源达到失败的迁移阈值,则当主资源活跃并可以保持在当前节点上时,它将停止。

13.1. 指定资源的强制放置

当约束分数为 +INFINITY 或 -INFINITY 时,就会发生强制放置。在这种情况下,如果约束无法满足,则不允许 source_resource 运行。对于 score=INFINITY,这包括 target_resource 没有激活的情况。

如果您需要 myresource1 始终与 myresource2 在同一台机器中运行,您可以添加以下约束:

# pcs constraint colocation add myresource1 with myresource2 score=INFINITY

由于使用了 INFINITY,如果 myresource2 无法在任何群集节点上运行(出于某种原因),则将不允许 myresource1 运行。

或者,您可能想要配置相反的集群,其中 myresource1 无法与 myresource2 在同一计算机上运行。在这种情况下,使用 分数=-INFINITY

# pcs constraint colocation add myresource1 with myresource2 score=-INFINITY

同样,通过指定 -INFINITY,约束会绑定。因此,如果唯一要运行的地方是 myresource2 已经是,则 myresource1 可能无法在任何位置运行。