12.2. 将资源发现限制为节点子集

Pacemaker 在任何位置启动资源前,它首先在每个节点上执行一次性 monitor 操作(通常称为"探测"),以了解资源是否已在运行。这种资源发现的过程可能会导致无法执行 monitor 的节点出现错误。

在节点上配置位置约束时,您可以使用 pcs constraint location 命令的 resource-discovery 选项,来为 Pacemaker 是否应该为指定资源在该节点上执行资源发现指示首选。将资源发现限制到物理上能够运行的节点子集可能会在有大量节点时显著提高性能。当使用 pacemaker_remote 来将节点数扩展到数百个节点范围时,应考虑此选项。

以下命令显示了为 pcs constraint location 命令指定 resource-discovery 选项的格式。在这个命令中,一个正的分值值对应一个基本位置约束,它配置为首选节点,而 分数 的负数值对应配置资源以避免节点的基本位置约束。与基本位置限制一样,您也可以使用这些限制的资源使用正则表达式。

pcs constraint location add id rsc node score [resource-discovery=option]

下表总结了为资源发现配置约束的基本参数的含义。

表 12.2. 资源发现约束参数

描述

id

约束本身的用户选择的名称。

rsc

资源名称

node

节点的名称

分数

整数值来指示给定资源应首选的资源还是避免给定节点的首选程度。一个正的分值对应一个基本位置约束,它配置为首选节点,而分数的负数值对应配置资源以避免节点的基本位置约束。

scoreINFINITY 值表示该节点可用时该节点首选,但不会阻止资源在指定节点不可用时在另一节点上运行。score-INFINITY 值表示该资源永远不会在该节点上运行,即使没有其它节点可用。

一个数字分数(即不是 INFINITY-INFINITY)意味着这个约束是可选的,除了其它因素外强于它,此约束将会被遵守。例如,如果资源已放置到另一个节点上,其 resource-stickiness 分数高于 prefers 位置约束的分数,则该资源将保留在其中。

resource-discovery 选项

* always - 始终为此节点上的指定资源执行资源发现。这是资源位置约束的默认 resource-discovery 值。

* never - 永远不会为这个节点上的指定资源执行资源发现。

* exclusive - 仅在此节点(以及其他标记为 exclusive 的节点)上对指定的资源执行资源发现。对跨不同节点的同一资源使用 exclusive 进行多次位置约束,会创建 resource-discovery 独占的节点子集。如果某个资源在一个或多个节点上标记为 exclusive 发现,则该资源仅被允许放在那个节点的子集中。

警告

resource-discovery 设置为 neverexclusive 的 Pacemaker 能够检测和停止运行不需要的服务实例(在不应该运行)。系统管理员可以确保该服务永远无法在没有资源发现的情况下在节点上活跃(比如卸载相关的软件)。