搜索

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

download PDF

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

16.1. Pacemaker 规则

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

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

表 16.1. 规则的属性
描述

role

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

分数

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

score-attribute

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

boolean-op

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

16.1.1. 节点属性表达式

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

表 16.2. 表达式的属性
描述

attribute

要测试的节点属性

type

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

操作

执行的对比。允许的值:

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

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

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

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

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

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

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

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

用户提供的比较值(必需的,除非 operationdefinednot_defined

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

表 16.3. 内置节点属性
名称描述

#uname

节点名称

#id

节点 ID

#kind

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

#is_dc

如果此节点是指定控制器(DC),则为 true,否则为 false

#cluster_name

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

#site_name

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

#role

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

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

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

表 16.4. 日期表达式的属性
描述

start

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

end

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

操作

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

* gt - 如果当前日期/时间晚于 start ,则为 True

* lt - 如果当前日期/时间早于 end,则为 True

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

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

16.1.3. 日期规格

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

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

表 16.5. 日期规格的属性
描述

id

日期的唯一名称

hours

允许的值: 0-23

monthdays

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

weekdays

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

yeardays

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

months

允许的值: 1-12

weeks

允许的值: 1-53(取决于 weekyear

years

根据 Gregorian 日历年

weekyears

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

moon

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.