第 11 章 使用 RHEL 系统角色配置高可用性集群
通过 ha_cluster 系统角色,您可以配置和管理使用 Pacemaker 高可用性集群资源管理器的高可用性集群。
11.1. ha_cluster RHEL 系统角色的变量 复制链接链接已复制到粘贴板!
在 ha_cluster RHEL 系统角色 playbook 中,您可以根据集群部署的要求为高可用性集群定义变量。
您可以为 ha_cluster RHEL 系统角色设置的变量如下:
ha_cluster_enable_repos-
一个布尔值标志,其启用包含
ha_clusterRHEL 系统角色所需的软件包的存储库。当此变量被设置为true时(默认值),您必须在将用作集群成员的系统上有活动的涵盖 RHEL 和 RHEL High Availability Add-On 的订阅,否则系统角色将失败。 ha_cluster_enable_repos_resilient_storage-
(RHEL 8.10 及更高版本)一个布尔值标志,其启用包含弹性存储软件包(如
dlm或gfs2)的存储库。要使此选项生效,ha_cluster_enable_repos必须设置为true。此变量的默认值为false。 ha_cluster_manage_firewall(RHEL 8.8 及更高版本)一个布尔值标志,其决定
ha_clusterRHEL 系统角色是否可以管理防火墙。当ha_cluster_manage_firewall设为true时,防火墙高可用性服务和fence-virt端口被启用。当ha_cluster_manage_firewall被设置为false时,ha_clusterRHEL 系统角色不管理防火墙。如果您的系统正在运行firewalld服务,则必须在 playbook 中将该参数设置为true。您可以使用
ha_cluster_manage_firewall参数来添加端口,但您无法使用该参数删除端口。要删除端口,请直接使用firewall系统角色。在 RHEL 8.8 及更高版本中,防火墙不再被默认配置,因为它仅在
ha_cluster_manage_firewall被设置为true时才被配置。ha_cluster_manage_selinux(RHEL 8.8 及更高版本)一个布尔值标志,其决定
ha_clusterRHEL 系统角色是否使用selinuxRHEL 系统角色管理属于防火墙高可用性服务的端口。当ha_cluster_manage_selinux设为true时,属于防火墙高可用性服务的端口与 SELinux 端口类型cluster_port_t相关联。当ha_cluster_manage_selinux被设置为false时,ha_clusterRHEL 系统角色不管理 SELinux。如果您的系统正在运行
selinux服务,则必须在 playbook 中将此参数设置为true。防火墙配置是管理 SELinux 的先决条件。如果没有安装防火墙,则管理 SELinux 策略会被跳过。您可以使用
ha_cluster_manage_selinux参数添加策略,但您无法使用该参数删除策略。要删除策略,请直接使用selinuxRHEL 系统角色。ha_cluster_cluster_present布尔值标志,如果设为
true,则会根据传递给角色的变量,决定是否在主机上配置 HA 集群。playbook 中没有指定且不被角色支持的任何集群配置将丢失。如果
ha_cluster_cluster_present设为false,则会从目标主机中删除所有 HA 集群配置。此变量的默认值为
true。以下示例 playbook 删除了
node1和node2上的所有集群配置Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_start_on_boot-
确定是否将集群服务配置为在引导时启动的布尔值标志。此变量的默认值为
true。 ha_cluster_fence_agent_packages-
要安装的隔离代理软件包列表。此变量的默认值为
fence-agents-all,fence-virt。 ha_cluster_extra_packages要安装的其他软件包列表。此变量的默认值是 no packages。
此变量可用于安装角色未自动安装的其他软件包,如自定义资源代理。
可以将隔离代理指定为这个列表的成员。但是,
ha_cluster_fence_agent_packages是用于指定隔离代理的推荐的角色变量,因此其默认值会被覆盖。ha_cluster_hacluster_password-
指定
hacluster用户的密码的字符串值。hacluster用户对集群具有完全访问权限。为保护敏感数据,vault 会加密密码,如使用 Ansible Vault 加密内容 中所述。没有默认密码值,必须指定此变量。 ha_cluster_hacluster_qdevice_password-
(RHEL 8.9 及更高版本)为仲裁设备指定
hacluster用户的密码的字符串值。只有在ha_cluster_quorum参数被配置为使用类型为net的仲裁设备,且仲裁设备上hacluster用户的密码与ha_cluster_hacluster_password参数指定的hacluster用户的密码不同时,才需要此参数。hacluster用户对集群具有完全访问权限。为保护敏感数据,vault 会加密密码,如使用 Ansible Vault 加密内容 中所述。此密码没有默认值。 ha_cluster_corosync_key_srcCorosync
authkey文件的路径,它是 Corosync 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_pacemaker_key_srcPacemaker
authkey文件的路径,它是 Pacemaker 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_fence_virt_key_srcfence-virt或fence-xvm预共享密钥文件的路径,它是fence-virt或fence-xvm隔离代理验证密钥的位置。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。如果
ha_clusterRHEL 系统角色以这种方式生成一个新密钥,那么您应该将密钥复制到节点的 hypervisor 中,以确保隔离正常工作。如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_pcsd_public_key_srcr,ha_cluster_pcsd_private_key_srcpcsdTLS 证书和私钥的路径。如果没有指定,则使用节点上已存在的证书密钥对。如果没有证书密钥对,则会生成一个随机的新密钥对。如果为此变量指定了私钥值,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果设置了这些变量,则将忽略此证书密钥对的
ha_cluster_regenerate_keys。这些变量的默认值为 null。
ha_cluster_pcsd_certificates(RHEL 8.8 及更高版本)使用
certificateRHEL 系统角色创建一个pcsd私钥和证书。如果您的系统没有使用
pcsd私钥和证书配置,则您可以使用以下两种方式之一创建它们:-
设置
ha_cluster_pcsd_certificates变量。当您设置ha_cluster_pcsd_certificates变量时,certificateRHEL 系统角色在内部使用,它会按照定义为pcsd创建私钥和证书。 -
不要设置
ha_cluster_pcsd_public_key_src、ha_cluster_pcsd_private_key_src或ha_cluster_pcsd_certificates变量。如果没有设置这些变量,ha_clusterRHEL 系统角色将通过pcsd自身创建pcsd证书。ha_cluster_pcsd_certificates的值被设置为certificateRHEL 系统角色中指定的变量certificate_requests的值。有关certificateRHEL 系统角色的更多信息,请参阅 使用 RHEL 系统角色请求证书。
-
设置
以下操作注意事项适用于
ha_cluster_pcsd_certificate变量的使用:-
除非您使用 IPA ,并将系统加入 IPA 域,否则
certificateRHEL 系统角色会创建自签名证书。在这种情况下,您必须在 RHEL 系统角色上下文之外明确配置信任设置。系统角色不支持配置信任设置。 -
当您设置
ha_cluster_pcsd_certificates变量时,不要设置ha_cluster_pcsd_public_key_src和ha_cluster_pcsd_private_key_src变量。 -
当您设置
ha_cluster_pcsd_certificates变量时,此证书-密钥对会忽略ha_cluster_regenerate_keys。
-
除非您使用 IPA ,并将系统加入 IPA 域,否则
此变量的默认值为
[]。有关在高可用性集群中创建 TLS 证书和密钥文件的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 为高可用性集群创建 pcsd TLS 证书和密钥文件。ha_cluster_regenerate_keys-
布尔值标志,当设为
true时,决定将重新生成预共享密钥和 TLS 证书。有关重新生成密钥和证书的更多信息,请参阅ha_cluster_corosync_key_src、ha_cluster_pacemaker_key_srcha_cluster_fence_virt_key_src、ha_cluster_pcsd_public_key_src和ha_cluster_pcsd_private_key_src变量的描述。 -
此变量的默认值为
false。 ha_cluster_pcs_permission_list配置使用
pcsd管理集群的权限。您使用这个变量配置的项目如下:-
type-用户或组 -
name- 用户或组名称 allow_list- 对指定的用户或组允许的操作:-
read- 查看集群状态和设置 -
write- 修改集群设置,权限和 ACL 除外 -
grant- 修改集群权限和 ACL -
full- 对集群的无限制访问,包括添加和删除节点,以及访问密钥和证书
-
-
ha_cluster_pcs_permission_list变量的结构及其默认值如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_cluster_name-
集群的名称。这是一个字符串值,默认值为
my-cluster。 ha_cluster_transport(RHEL 8.7 及更高版本) 设置集群传输方法。您使用这个变量配置的项目如下:
-
type(可选) - 传输类型:knet,udp, 或udpu。udp和udpu传输类型只支持一个链接。对于udp和udpu,始终禁用加密。若未指定,则默认为knet。 -
options(可选)- 带有传输选项的“名称-值”的字典列表。 -
links(可选)- “名称-值”的字典列表。每个 name-value 字典列表都包含适用于一个 Corosync 链接的选项。建议您为每个链接设置linknumber值。否则,第一个字典列表被默认分配给第一个链接,第二个分配给第二个链接,以此类推。 -
compression(可选)- 配置传输压缩的 name-value 字典列表。仅支持knet传输类型。 -
crypto(可选)- 配置传输加密的 name-value 字典列表。默认情况下启用加密。仅支持knet传输类型。
-
有关允许的选项列表,请查看
pcs -h cluster setup帮助页或pcs(8) man page 的cluster部分中的setup描述。有关更详细的描述,请查看corosync.conf(5) man page。ha_cluster_transport变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置传输方法的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 在高可用性集群中配置 Corosync 值。ha_cluster_totem(RHEL 8.7 及更高版本) 配置 Corosync totem。有关允许的选项列表,请查看
pcs -h cluster setup帮助页或pcs(8) man page 的cluster部分中的setup描述。有关更详细的说明,请查看corosync.conf(5) man page。ha_cluster_totem变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置 Corosync totem 的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 在高可用性集群中配置 Corosync 值。ha_cluster_quorum(RHEL 8.7 及更高版本) 配置集群仲裁。您可以为集群仲裁配置以下项目:
-
options(可选)- 配置仲裁的名称-值字典的列表。允许的选项有:auto_tie_breaker、last_man_standing、last_man_standing_window和wait_for_all。有关仲裁选项的详情,请查看votequorum(5)手册页。 device(可选)- (RHEL 8.8 及更新的版本)将集群配置为使用仲裁设备。默认情况下,不使用仲裁设备。-
model(必需)- 指定仲裁设备型号。仅支持net model_options(可选)- 配置指定仲裁设备型号的名称-值字典的列表。对于型号net,您必须指定host和algorithm选项。使用
pcs-address选项设置连接到qnetd主机的自定义pcsd地址和端口。如果没有指定这个选项,角色会连接到主机上的默认pcsd端口。-
generic_options(可选)- 不特定于型号的名称0值字典设置仲裁设备选项的列表。 heuristics_options(可选)- 配置仲裁设备启发式的名称-值字典的列表。有关仲裁设备选项的详情,请查看
corosync-qdevice(8)手册页。通用选项为sync_timeout和timeout。有关型号net选项,请查看quorum.device.net部分。有关启发式选项,请查看quorum.device.heuristics部分。要重新生成仲裁设备 TLS 证书,请将
ha_cluster_regenerate_keys变量设置为true。
-
-
ha_cluster_quorum变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置集群仲裁的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 在高可用性集群中配置 Corosync 值。有关配置使用仲裁设备的集群的ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置使用仲裁设备的高可用性集群。ha_cluster_sbd_enabled(RHEL 8.7 和更高版本) 一个布尔值标记,它决定集群是否可以使用 SBD 节点隔离机制。此变量的默认值为
false。有关启用 SBD 的
ha_cluster系统角色 playbook 的示例,请参阅 配置带有 SBD 节点隔离的高可用性集群。ha_cluster_sbd_options(RHEL 8.7 及更高版本) 指定 SBD 选项的 name-value 字典列表。有关这些选项的详情,请参考
sbd(8)手册页中的Configuration via environment部分。支持的选项包括:
-
delay-start- 默认为false,记录为SBD_DELAY_START -
startmode- 默认为always,记录为SBD_START_MODE -
timeout-action- 默认为flush,reboot,记录为SBD_TIMEOUT_ACTION -
watchdog-timeout- 默认为5,记录为SBD_WATCHDOG_TIMEOUT
-
有关配置 SBD 选项的
ha_cluster系统角色 playbook 的示例,请参阅 配置带有 SBD 节点隔离的高可用性集群。使用 SBD 时,您可以选择性地为清单中的每个节点配置 watchdog 和 SBD 设备。有关在清单文件中配置 watchdog 和 SBD 设备的详情,请参考 为 ha_cluster 系统角色指定清单。
ha_cluster_cluster_propertiesPacemaker 集群范围配置的集群属性集列表。仅支持一组集群属性。
一组集群属性的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,不设置任何属性。
以下示例 playbook 配置包含
node1和node2的集群,并设置stonith-enabled和no-quorum-policy集群属性。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_node_options(RHEL 8. 10 及更高版本)此变量定义因集群节点而异的设置。它为指定的节点设置选项,但不指定哪些节点组成了集群。您可以在清单或 playbook 中使用
hosts参数指定哪些节点组成了集群。您使用这个变量配置的项目如下:
-
node_name(必需)- 为其定义 Pacemaker 节点属性的节点的名称。它必须匹配为节点定义的名称。 -
attributes(可选)- 节点的 Pacemaker 节点属性集合的列表。目前,只支持一个集合。使用第一个集合,其余的忽略。
-
ha_cluster_node_options变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,没有定义节点选项。
有关包含节点选项配置的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有节点属性的高可用性集群。ha_cluster_resource_primitives此变量定义 RHEL 系统角色配置的 pacemaker 资源,包括隔离资源。您可以为每个资源配置以下项目:
-
id(必需)- 资源的 ID。 -
agent(必需)- 资源或隔离代理的名称,如ocf:pacemaker:Dummy或stonith:fence_xvm。必须为 STONITH 代理指定stonith:。对于资源代理,可以使用短名称,如Dummy,而不是ocf:pacemaker:Dummy。但是,如果安装了多个具有相同短名称的代理,则角色将失败,因为它将无法决定应使用哪个代理。因此,建议您在指定资源代理时使用全名。 -
instance_attrs(可选) - 资源的实例属性集合列表。目前,只支持一个集合。属性确切的名称和值,以及它们是否是必需的,这取决于资源或隔离代理。 -
meta_attrs(可选) - 资源的元属性集合列表。目前,只支持一个集合。 -
copy_operations_from_agent(可选)- (RHEL 8.9 及更新版本)资源代理通常为资源操作定义默认设置,如interval和timeout,为特定代理进行了优化。如果此变量被设为true,则这些设置将被复制到资源配置中。否则,集群范围的默认值应用到资源。如果您使用ha_cluster_resource_operation_defaults角色变量为资源定义资源操作默认值,则您可以将其设置为false。此变量的默认值为true。 operations(可选) - 资源操作列表。-
action(必需)- pacemaker 以及资源或隔离代理定义的操作措施。 -
attrs(必需)- 操作选项,必须至少指定一个选项。
-
-
使用
ha_clusterRHEL 系统角色配置的资源定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下不定义任何资源。
有关包含资源配置的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有隔离和资源的高可用性集群。ha_cluster_resource_groups此变量定义由系统角色配置的 pacemaker 资源组。您可以为每个资源组配置以下项目:
-
id(必需)- 组的 ID. -
resources(必需) - 组的资源列表.每个资源通过其 ID 引用,资源必须在ha_cluster_resource_primitives变量中定义。必须至少列出一个资源。 -
meta_attrs(可选) - 组的元属性集合列表。目前,只支持一个集合。
-
使用
ha_clusterRHEL 系统角色配置的资源组定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,不定义任何资源组。
有关包含资源组配置的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有隔离和资源的高可用性集群。ha_cluster_resource_clones此变量定义由系统角色配置的 pacemaker 资源克隆。您可以为资源克隆配置以下项目:
-
resource_id(必需)- 要克隆的资源.资源必须在ha_cluster_resource_primitives变量或ha_cluster_resource_groups变量中定义。 -
promotable(可选)- 表示要创建的资源克隆是否是可升级的克隆,用true或false表示。 -
id(可选)- 克隆的自定义 ID。如果未指定 ID,将会生成它。如果集群不支持这个选项,则会显示一个警告。 -
meta_attrs(可选)- 克隆的元属性集合列表。目前,只支持一个集合。
-
使用
ha_clusterRHEL 系统角色配置的资源克隆定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,没有定义资源克隆。
有关包含资源克隆配置的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置隔离和资源的高可用性集群。ha_cluster_resource_defaults(RHEL 8.9 及更新版本)此变量定义资源默认值集合。您可以定义多个默认值集合,并使用规则将它们应用到特定代理的资源。您使用
ha_cluster_resource_defaults变量指定的默认值不会应用到使用它们自己定义值的覆盖它们的资源。只有 meta 属性可以被指定为默认值。
您可以为每个默认值集合配置以下项目:
-
id(可选)- 默认值集合的 ID。如果没有指定,它会自动生成。 -
rule(可选)- 使用pcs语法编写的规则,定义何时以及集合适用于哪些资源。有关指定规则的详情,请查看pcs(8)手册页中的资源默认值集合创建部分。 -
score(可选)- 默认值集合的权重。 -
attrs(可选)- 作为默认值应用到资源的元数据属性。
-
ha_cluster_resource_defaults变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置资源默认值的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有资源和资源操作默认值的高可用性集群。ha_cluster_resource_operation_defaults(RHEL 8.9 及更新版本)此变量定义资源操作默认值的集合。您可以定义多个默认值集合,并使用规则将它们应用到特定代理的资源和特定的资源操作。使用
ha_cluster_resource_operation_defaults变量指定的默认值不应用到使用它们自己定义的值覆盖它们的资源操作。默认情况下,ha_clusterRHEL 系统角色配置资源,来为资源操作定义自己的值。有关使用ha_cluster_resource_operations_defaults变量覆盖这些默认值的详情,请查看ha_cluster_resource_primitives中的copy_operations_from_agent项的描述。只有 meta 属性可以被指定为默认值。
ha_cluster_resource_operations_defaults变量的结构与ha_cluster_resource_defaults变量的结构一样,但指定规则的方式除外。有关指定规则来描述集合应用到的资源操作的详情,请查看pcs(8)手册页中的资源操作默认值集合创建部分。ha_cluster_stonith_levels(RHEL 8.10 及更高版本)此变量定义 STONITH 级别,也称为隔离拓扑。隔离级别将集群配置为使用多个设备来隔离节点。如果一个设备失败,您可以定义替代设备,并且可以要求多个设备全部成功执行才能认为节点被成功隔离。有关隔离级别的更多信息,请参阅 配置和管理高可用性集群 中的 配置隔离级别。
您可以在定义隔离级别时配置以下条目:
-
level(必需)- 尝试隔离级别的顺序。Pacemaker 按照升序尝试级别,直到有一个成功为止。 -
target(可选)- 此级别应用到的节点的名称。 您必须指定以下三个选择之一:
-
target_pattern- 与此级别应用到的节点名称匹配的POSIX 扩展正则表达式。 -
target_attribute- 为此级别应用到的节点设置的节点属性的名称。 -
target_attribute和target_value- 为此级别应用到的节点设置的节点属性的名称和值。
-
resouce_ids(必需)- 必须为此级别尝试的所有隔离资源的列表。默认情况下,没有定义隔离级别。
-
使用
ha_clusterRHEL 系统角色配置的隔离级别定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置隔离默认值的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有隔离级别的高可用性集群。ha_cluster_constraints_location此变量定义资源位置限制。资源位置限制表示资源可在哪些节点上运行。您可以指定资源 ID 或模式匹配的资源,它们可以匹配多个资源。您可以通过节点名称或规则指定节点。
您可以为资源位置约束配置以下项目:
-
resource(必需)- 约束应用到的资源规格。 -
node(必需)- 资源应首选或避免的节点的名称。 -
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。score- 设置约束的权重。-
正
score值表示资源首选在节点上运行。 -
负
score值表示资源应避免在节点上运行。 -
score值为-INFINITY表示资源必须避免在节点上运行。 -
如果没有指定
score,分数值默认为INFINITY。
-
正
-
默认情况下,没有定义资源位置限制。
指定资源 ID 和节点名称的资源位置约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您为资源位置约束配置的项目,用于指定资源模式是为资源位置约束配置的相同项目,用于指定资源 ID,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和节点名称的资源位置约束结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为指定资源 ID 和规则的资源位置约束配置以下项目:
resource(必需)- 约束应用到的资源规格。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
rule(必需)- 使用pcs语法编写的 Constraint 规则。如需更多信息,请参阅pcs(8)man page的约束位置部分。 - 指定的其他项目的含义与未指定规则的资源约束相同。
指定资源 ID 和规则的资源位置约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为资源位置约束配置的项目,用于指定资源模式,规则是用于资源位置约束的相同项目,用于指定资源 ID 和规则,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和规则的资源位置约束结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有资源约束的高可用性集群。ha_cluster_constraints_colocation此变量定义资源托管约束。资源托管约束表示一个资源的位置取决于另一个资源的位置。存在两种类型的托管约束:两个资源的一个简单的托管约束,并为多个资源设置托管约束。
您可以为简单资源托管约束配置以下项目:
resource_follower(必需)- 应相对于resource_leader的资源。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
resource_leader(必需)- 集群将决定优先放置此资源的位置,然后决定放置resource_follower的位置。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。score- 设置约束的权重。-
正
score值表示资源应该在同一节点上运行。 -
负
score值表示资源应在不同的节点上运行。 -
score值为+INFINITY表示资源必须在同一节点上运行。 -
score值为-INFINITY表示资源必须在不同的节点上运行。 -
如果没有指定
score,分数值默认为INFINITY。
-
正
默认情况下,没有定义资源 colocation 约束。
简单资源 colocation 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集托管约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id(可选)- 与简单的托管约束同样的值。 -
options(可选)- 与简单的托管约束同样的值。
资源集托管约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有资源约束的高可用性集群。ha_cluster_constraints_order此变量定义资源顺序约束。资源顺序限制表示应发生某些资源操作的顺序。有两种资源顺序约束:两个资源的简单顺序约束,以及多个资源的设置顺序约束。
您可以为简单资源顺序约束配置以下项目:
resource_first(必需)-resource_then资源依赖的资源。-
id(必需)- 资源 ID。 -
action(可选)- 在为resource_then资源启动操作前必须完成的操作。允许的值:start、stop、promote、demote。
-
resource_then(必需)- 依赖资源。-
id(必需)- 资源 ID。 -
action(可选)- 资源只能在resource_first资源执行操作后执行的操作。允许的值:start、stop、promote、demote。
-
-
id(可选)- 约束 ID。如果未指定,它将自动生成。 -
options(可选)- “名称-值”字典列表。
默认情况下,没有定义资源顺序限制。
简单资源顺序约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集顺序约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id(可选)- 相同值作为简单顺序约束。 -
options(可选)- 相同值作为简单顺序约束。
资源集顺序约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有资源约束的高可用性集群。ha_cluster_constraints_ticket此变量定义资源 ticket 约束。资源票据限制表示依赖于特定票据的资源。有两种类型的资源 ticket 约束:一个资源的简单 ticket 约束,多个资源的 ticket 顺序约束。
您可以为简单资源票据约束配置以下项目:
resource(必需)- 约束应用到的资源规格。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
ticket(必需)- 资源所依赖的票据的名称。 -
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。-
loss-policy(可选)- 在撤销 ticket 时要对资源执行的操作。
-
默认情况下,没有定义资源 ticket 约束。
简单资源票据约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集票据约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
ticket(必需)- 相同值作为一个简单 ticket 约束。 -
id(可选)- 相同值作为简单票据约束。 -
选项(可选)- 相同值作为简单票据约束。
资源集 ticket 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置带有资源约束的高可用性集群。ha_cluster_qnetd(RHEL 8.8 及更高版本)此变量配置
qnetd主机,然后其可以作为集群的外部仲裁设备。您可以为
qnetd主机配置以下项目:-
present(可选)- 如果为true,则在主机上配置qnetd实例。如果为false,请从主机中删除qnetd配置。默认值为false。如果将其设置为true,则必须将ha_cluster_cluster_present设置为false。 -
start_on_boot(可选)- 配置qnetd实例是否应在引导时自动启动。默认值为true。 -
regenerate_keys(可选)- 将此变量设置为true以重新生成qnetdTLS 证书。如果重新生成了证书,则必须重新运行角色,以便每个集群再次连接到qnetd主机,或者手动运行pcs。
-
您无法在集群节点上运行
qnetd,因为隔离会破坏qnetd操作。有关配置使用仲裁设备的集群的
ha_clusterRHEL 系统角色 playbook 的示例,请参阅 配置使用仲裁设备的集群。