Red Hat Training

A Red Hat training course is available for RHEL 8

第 15 章 使用规则决定资源位置

对于更复杂的位置限制,您可以使用 Pacemaker 规则来确定资源的位置。

15.1. Pacemaker 规则

Pacemaker 规则可用于使您的配置更加动态。规则的一个用法可能是根据时间将机器分配给不同的处理组(使用 node 属性),然后在创建位置约束时使用该属性。

每个规则都可以包含多个表达式、日期表达式甚至其它规则。表达式的结果根据规则的 boolean-op 字段合并,以确定规则最终评估为 truefalse。接下来的操作要看规则使用的上下文而定。

表 15.1. 规则的属性

描述

role

只有在资源位于该角色时才会应用该规则。允许的值: started、SlaveMaster。注意:带有 role="Master" 的规则无法确定克隆实例的初始位置。它只会影响哪些活跃的实例将会被提升。

分数

规则评估为 true 时要应用的分数。仅限于作为位置约束一部分的规则使用。

score-attribute

如果规则评估为 true,则要查找并用作分数的节点属性。仅限于作为位置约束一部分的规则使用。

boolean-op

如何组合多个表达式对象的结果。允许的值: .默认值为 and.

15.1.1. 节点属性表达式

节点属性表达式用于根据节点或节点定义的属性控制资源。

表 15.2. 表达式的属性

描述

attribute

要测试的节点属性

type

决定值应该如何进行测试。允许的值: 字符串整数数字(RHEL 8.4 及更新版本) 版本。默认值为 string

操作

执行的对比。允许的值:

* lt - 如果节点属性 的值小于值,则为 True

* gt - 如果节点属性 的值大于值,则为 True

* LTE - 如果节点属性的值小于或等于值,则为 True

* G TE - 如果节点属性的值大于或等于值,则为 True

* eq - 如果节点属性 的值等于值,则为 True

* ne - 如果节点属性的值不等于值,则为 True

* 已定义 - 如果节点具有命名属性,则为 True

* not_defined - 如果节点没有命名属性,则为 True

value

用户提供用于比较的值(除非 定义了 或未定义 操作

除了管理员添加的任何属性外,群集还为每个节点定义特殊的内置节点属性,如下表中所述。

表 15.3. 内置节点属性

名称描述

#uname

节点名称

#id

节点 ID

#kind

节点类型。可能的值有 cluster 、remotecontainer。对于 使用 ocf:pacemaker:remote 资源创建的 Pacemaker 远程节点,以及 Pacemaker 远程客户机节点和捆绑包节点 的容器kind 的值是远程的。

#is_dc

如果此节点是 Designated Controller(DC),则为 true,否则 为 false

#cluster_name

cluster-name 集群属性的值(如果设置)

#site_name

site-name node 属性的值(如果设置),否则与 #cluster-name相同

#role

此节点上相关的可远程克隆的角色。仅在可转发克隆的位置约束的规则内有效。

15.1.2. 基于时间/日期的表达式

日期表达式用于根据当前的日期/时间控制资源或集群选项。它们可以包含可选的日期规格。

表 15.4. 日期表达式的属性

描述

start

符合 ISO8601 规范的日期/时间。

end

符合 ISO8601 规范的日期/时间。

操作

根据上下文,将当前日期/时间与开始或结束日期进行比较。允许的值:

* gt - 如果当前日期/时间在启动后,则为 True

* lt - 如果当前日期/时间在 结束前,则为 True

* in_range - 如果当前日期/时间在 开始之后结束前,则为 True

* date-spec - 执行与当前日期/时间类似的 cron 比较

15.1.3. 日期规格

日期规格用于创建与时间相关的类似 cron 的表达式。每个字段可以包含一个数字或一个范围。任何未提供的字段都会被忽略,而不是使用默认值 0。

例如,月日="1" 与每月第一天和 小时="09-17" 匹配上午 9 点到下午 5 点(包含)之间的小时数。但是,您无法指定 weekdays="1,2"weekdays="1-2,5-6",因为它们包含多个范围。

表 15.5. 日期规格的属性

描述

id

日期的唯一名称

hours

允许的值: 0-23

monthdays

允许的值: 0-31(取决于月份和年)

weekdays

允许的值: 1-7(1 代表星期一,7 代表星期日)

年日

允许的值: 1-366(根据年而定)

months

允许的值: 1-12

允许的值: 1-53(取决于 星期年

根据 Gregorian 日历年

周年

可能不同于 Gregorian 年;例如 ,2005-001 Ordinal 也是 2005-01-01 Gregorian,也是 2004-W53-6 Weekly

moon

允许的值: 0-7(0 为新月,4 为满月)。