第 11 章 使用 RHEL 系统角色配置高可用性集群
通过 ha_cluster
系统角色,您可以配置和管理使用 Pacemaker 高可用性集群资源管理器的高可用性集群。
11.1. ha_cluster
RHEL 系统角色的变量
在 ha_cluster
系统角色 playbook 中,您可以根据集群部署的要求为高可用性集群定义变量。
您可以为 ha_cluster
系统角色设置的变量如下:
ha_cluster_enable_repos
-
启用存储库的布尔值标志,该存储库包含
ha_cluster
系统角色所需的软件包。当此变量被设置为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_cluster
系统角色是否管理防火墙。当ha_cluster_manage_firewall
设为true
时,防火墙高可用性服务和fence-virt
端口被启用。当ha_cluster_manage_firewall
设为false
时,ha_cluster
系统角色不管理防火墙。如果您的系统正在运行firewalld
服务,则必须在 playbook 中将该参数设置为true
。您可以使用
ha_cluster_manage_firewall
参数来添加端口,但您无法使用该参数删除端口。要删除端口,请直接使用firewall
系统角色。从 RHEL 8.8 开始,防火墙不再会被默认配置,因为它仅在
ha_cluster_manage_firewall
设为true
时才配置。ha_cluster_manage_selinux
(RHEL 8.8 及更高版本)一个布尔值标志,它决定了
ha_cluster
系统角色是否使用selinux
系统角色管理属于防火墙高可用性服务的端口。当ha_cluster_manage_selinux
设为true
时,属于防火墙高可用性服务的端口与 SELinux 端口类型cluster_port_t
相关联。当ha_cluster_manage_selinux
设为false
时,ha_cluster
系统角色不管理 SELinux。如果您的系统正在运行
selinux
服务,则必须在 playbook 中将此参数设置为true
。防火墙配置是管理 SELinux 的先决条件。如果没有安装防火墙,则管理 SELinux 策略会被跳过。您可以使用
ha_cluster_manage_selinux
参数添加策略,但您无法使用该参数删除策略。要删除策略,请直接使用selinux
系统角色。ha_cluster_cluster_present
布尔值标志,如果设为
true
,则会根据传递给角色的变量,决定是否在主机上配置 HA 集群。playbook 中没有指定且不受角色支持的任何集群配置都将丢失。如果
ha_cluster_cluster_present
设为false
,则会从目标主机中删除所有 HA 集群配置。此变量的默认值为
true
。以下示例 playbook 删除了
node1
和node2
上的所有集群配置- hosts: node1 node2 vars: ha_cluster_cluster_present: false roles: - rhel-system-roles.ha_cluster
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_src
Corosync
authkey
文件的路径,它是 Corosync 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey
值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys
。此变量的默认值为 null。
ha_cluster_pacemaker_key_src
Pacemaker
authkey
文件的路径,它是 Pacemaker 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey
值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys
。此变量的默认值为 null。
ha_cluster_fence_virt_key_src
fence-virt
或fence-xvm
预共享密钥文件的路径,它是fence-virt
或fence-xvm
隔离代理验证密钥的位置。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。如果
ha_cluster
系统角色以这种方式生成一个新密钥,则您应该将密钥复制到节点的 hypervisor ,以确保隔离正常工作。如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys
。此变量的默认值为 null。
ha_cluster_pcsd_public_key_srcr
,ha_cluster_pcsd_private_key_src
pcsd
TLS 证书和私钥的路径。如果没有指定,则使用节点上已存在的证书密钥对。如果没有证书密钥对,则会生成一个随机的新密钥对。如果为此变量指定了私钥值,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果设置了这些变量,则将忽略此证书密钥对的
ha_cluster_regenerate_keys
。这些变量的默认值为 null。
ha_cluster_pcsd_certificates
(RHEL 8.8 及更高版本)使用证书系统角色创建一个
pcsd
私钥和证书
。如果您的系统没有使用
pcsd
私钥和证书配置,则您可以使用以下两种方式之一创建它们:-
设置
ha_cluster_pcsd_certificates
变量。当您设置ha_cluster_pcsd_certificates
变量时,证书系统角色会在内部使用,它会为pcsd
创建私钥和证书。 -
不要设置
ha_cluster_pcsd_public_key_src
、ha_cluster_pcsd_private_key_src
或ha_cluster_pcsd_certificates
变量。如果您没有设置这些变量,则ha_cluster
系统角色将使用pcsd
本身创建pcsd
证书。ha_cluster_pcsd_certificates
的值被设置为变量certificate_requests
的值,如certificate
系统角色中指定的。有关证书系统角色的更多信息,请参阅使用 RHEL 系统角色请求证书。
-
设置
以下操作注意事项适用于
ha_cluster_pcsd_certificate
变量的使用:-
除非使用 IPA 并将系统加入 IPA 域,否则证书系统角色会创建自签名证书。
在这种情况下,您必须明确配置 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_cluster
系统角色 playbook 示例,请参阅 为高可用性集群创建 pcsd TLS 证书和密钥文件。ha_cluster_regenerate_keys
-
布尔值标志,当设为
true
时,决定将重新生成预共享密钥和 TLS 证书。有关重新生成密钥和证书的更多信息,请参阅ha_cluster_corosync_key_src
、ha_cluster_pacemaker_key_src
ha_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
变量的结构及其默认值如下:ha_cluster_pcs_permission_list: - type: group name: hacluster allow_list: - grant - read - write
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
变量的结构如下:ha_cluster_transport: type: knet options: - name: option1_name value: option1_value - name: option2_name value: option2_value links: - - name: option1_name value: option1_value - name: option2_name value: option2_value - - name: option1_name value: option1_value - name: option2_name value: option2_value compression: - name: option1_name value: option1_value - name: option2_name value: option2_value crypto: - name: option1_name value: option1_value - name: option2_name value: option2_value
有关配置传输方法的
ha_cluster
系统角色 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
变量的结构如下:ha_cluster_totem: options: - name: option1_name value: option1_value - name: option2_name value: option2_value
有关配置 Corosync totem 的
ha_cluster
系统角色 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
变量的结构如下:ha_cluster_quorum: options: - name: option1_name value: option1_value - name: option2_name value: option2_value device: model: string model_options: - name: option1_name value: option1_value - name: option2_name value: option2_value generic_options: - name: option1_name value: option1_value - name: option2_name value: option2_value heuristics_options: - name: option1_name value: option1_value - name: option2_name value: option2_value
有关配置集群仲裁的
ha_cluster
系统角色 playbook 示例,请参阅在 高可用性集群中配置 Corosync 值。有关使用仲裁设备配置集群的ha_cluster
系统角色 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 字典列表。支持的选项包括:
-
delay-start
- 默认为no
-
startmode
- 默认为always
-
timeout-action
- 默认为flush,reboot
watchdog-timeout
- 默认为5
有关这些选项的详情,请参考
sbd
(8)手册页中的Configuration via environment
部分。
-
有关配置 SBD 选项的
ha_cluster
系统角色 playbook 示例,请参阅使用 SBD 节点隔离配置高可用性集群。使用 SBD 时,您可以选择性地为清单中的每个节点配置 watchdog 和 SBD 设备。有关在清单文件中配置 watchdog 和 SBD 设备的详情,请参考为 ha_cluster 系统角色指定清单。
ha_cluster_cluster_properties
Pacemaker 集群范围配置的集群属性集列表。仅支持一组集群属性。
一组集群属性的结构如下:
ha_cluster_cluster_properties: - attrs: - name: property1_name value: property1_value - name: property2_name value: property2_value
默认情况下,不设置任何属性。
以下示例 playbook 配置包含
node1
和node2
的集群,并设置stonith-enabled
和no-quorum-policy
集群属性。- hosts: node1 node2 vars: ha_cluster_cluster_name: my-new-cluster ha_cluster_hacluster_password: password ha_cluster_cluster_properties: - attrs: - name: stonith-enabled value: 'true' - name: no-quorum-policy value: stop roles: - rhel-system-roles.ha_cluster
ha_cluster_node_options
(RHEL 8. 10 及更高版本)此变量定义各种因集群节点而异的设置。它为指定节点设置选项,但不指定组成集群的节点。您可以使用清单或 playbook 中的
hosts
参数指定组成集群的节点。您使用这个变量配置的项目如下:
-
node_name
(必需)- 定义 Pacemaker 节点属性的节点的名称。 -
attributes
(可选)- 节点的 Pacemaker 节点属性集合列表。目前,不支持每个节点的设置。
-
ha_cluster_node_options
变量的结构如下:ha_cluster_node_options: - node_name: node1 attributes: - attrs: - name: attribute1 value: value1_node1 - name: attribute2 value: value2_node1 - node_name: node2 attributes: - attrs: - name: attribute1 value: value1_node2 - name: attribute2 value: value2_node2
默认情况下,没有定义节点选项。
有关包含节点选项配置的
ha_cluster
系统角色 playbook 示例 ,请参阅使用节点属性配置高可用性集群。ha_cluster_resource_primitives
此变量定义由系统角色配置的 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_cluster
系统角色配置的资源定义的结构如下:- id: resource-id agent: resource-agent instance_attrs: - attrs: - name: attribute1_name value: attribute1_value - name: attribute2_name value: attribute2_value meta_attrs: - attrs: - name: meta_attribute1_name value: meta_attribute1_value - name: meta_attribute2_name value: meta_attribute2_value copy_operations_from_agent: bool operations: - action: operation1-action attrs: - name: operation1_attribute1_name value: operation1_attribute1_value - name: operation1_attribute2_name value: operation1_attribute2_value - action: operation2-action attrs: - name: operation2_attribute1_name value: operation2_attribute1_value - name: operation2_attribute2_name value: operation2_attribute2_value
默认情况下不定义任何资源。
有关包含资源配置的
ha_cluster
系统角色 playbook 示例 ,请参阅使用隔离和资源配置高可用性集群。ha_cluster_resource_groups
此变量定义由系统角色配置的 pacemaker 资源组。您可以为每个资源组配置以下项目:
-
id
(必需)- 组的 ID. -
resources
(必需) - 组的资源列表.每个资源通过其 ID 引用,资源必须在ha_cluster_resource_primitives
变量中定义。必须至少列出一个资源。 -
meta_attrs
(可选) - 组的元属性集合列表。目前,只支持一个集合。
-
使用
ha_cluster
系统角色配置的资源组定义的结构如下:ha_cluster_resource_groups: - id: group-id resource_ids: - resource1-id - resource2-id meta_attrs: - attrs: - name: group_meta_attribute1_name value: group_meta_attribute1_value - name: group_meta_attribute2_name value: group_meta_attribute2_value
默认情况下,不定义任何资源组。
有关包含资源组配置的
ha_cluster
系统角色 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_cluster
系统角色配置的资源克隆定义的结构如下:ha_cluster_resource_clones: - resource_id: resource-to-be-cloned promotable: true id: custom-clone-id meta_attrs: - attrs: - name: clone_meta_attribute1_name value: clone_meta_attribute1_value - name: clone_meta_attribute2_name value: clone_meta_attribute2_value
默认情况下,没有定义资源克隆。
有关包含资源克隆配置的
ha_cluster
系统角色 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
变量的结构如下:ha_cluster_resource_defaults: meta_attrs: - id: defaults-set-1-id rule: rule-string score: score-value attrs: - name: meta_attribute1_name value: meta_attribute1_value - name: meta_attribute2_name value: meta_attribute2_value - id: defaults-set-2-id rule: rule-string score: score-value attrs: - name: meta_attribute3_name value: meta_attribute3_value - name: meta_attribute4_name value: meta_attribute4_value
有关配置资源默认值的
ha_cluster
系统角色 playbook 示例,请参阅使用资源和资源操作默认值配置高可用性集群。ha_cluster_resource_operation_defaults
(RHEL 8.9 及更新版本)此变量定义资源操作默认值的集合。您可以定义多个默认值集合,并使用规则将它们应用到特定代理的资源和特定的资源操作。使用
ha_cluster_resource_operation_defaults
变量指定的默认值不应用到使用它们自己定义的值覆盖它们的资源操作。默认情况下,ha_cluster
系统角色配置资源来为资源操作定义自己的值。有关使用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_cluster
系统角色配置的隔离级别定义的结构如下:ha_cluster_stonith_levels: - level: 1..9 target: node_name target_pattern: node_name_regular_expression target_attribute: node_attribute_name target_value: node_attribute_value resource_ids: - fence_device_1 - fence_device_2 - level: 1..9 target: node_name target_pattern: node_name_regular_expression target_attribute: node_attribute_name target_value: node_attribute_value resource_ids: - fence_device_1 - fence_device_2
有关配置隔离默认值的
ha_cluster
系统角色 playbook 示例 ,请参阅使用隔离级别配置高可用性集群。ha_cluster_constraints_location
此变量定义资源位置限制。资源位置限制表示资源可在哪些节点上运行。您可以指定资源 ID 或模式匹配的资源,它们可以匹配多个资源。您可以通过节点名称或规则指定节点。
您可以为资源位置约束配置以下项目:
-
resource
(必需)- 约束应用到的资源规格。 -
node
(必需)- 资源应首选或避免的节点的名称。 -
id
(可选)- 约束 ID。如果未指定,它将自动生成。 options
(可选)- “名称-值”字典列表。score
- 设置约束的权重。-
正
score
值表示资源首选在节点上运行。 -
负
score
值表示资源应避免在节点上运行。 -
score
值为-INFINITY
表示资源必须避免在节点上运行。 -
如果没有指定
score
,分数值默认为INFINITY
。
-
正
-
默认情况下,没有定义资源位置限制。
指定资源 ID 和节点名称的资源位置约束的结构如下:
ha_cluster_constraints_location: - resource: id: resource-id node: node-name id: constraint-id options: - name: score value: score-value - name: option-name value: option-value
您为资源位置约束配置的项目,用于指定资源模式是为资源位置约束配置的相同项目,用于指定资源 ID,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern
(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和节点名称的资源位置约束结构如下:
ha_cluster_constraints_location: - resource: pattern: resource-pattern node: node-name id: constraint-id options: - name: score value: score-value - name: resource-discovery value: resource-discovery-value
您可以为指定资源 ID 和规则的资源位置约束配置以下项目:
resource
(必需)- 约束应用到的资源规格。-
id
(必需)- 资源 ID。 -
role
(可选)- 约束限制的资源角色:Started
、Unpromoted
,Promoted
。
-
-
rule
(必需)- 使用pcs
语法编写的 Constraint 规则。如需更多信息,请参阅pcs
(8)man page的约束位置
部分。 - 指定的其他项目的含义与未指定规则的资源约束相同。
指定资源 ID 和规则的资源位置约束的结构如下:
ha_cluster_constraints_location: - resource: id: resource-id role: resource-role rule: rule-string id: constraint-id options: - name: score value: score-value - name: resource-discovery value: resource-discovery-value
为资源位置约束配置的项目,用于指定资源模式,规则是用于资源位置约束的相同项目,用于指定资源 ID 和规则,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern
(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和规则的资源位置约束结构如下:
ha_cluster_constraints_location: - resource: pattern: resource-pattern role: resource-role rule: rule-string id: constraint-id options: - name: score value: score-value - name: resource-discovery value: resource-discovery-value
有关创建具有资源限制的集群的
ha_cluster
系统角色 playbook 示例 ,请参阅使用资源限制配置高可用性集群。ha_cluster_constraints_colocation
此变量定义资源 colocation 约束。资源共存限制表示一个资源的位置取决于另一个资源的位置。存在两种类型的 colocation 约束:两个资源的一个简单 colocation 约束,并为多个资源设置 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 约束的结构如下:
ha_cluster_constraints_colocation: - resource_follower: id: resource-id1 role: resource-role1 resource_leader: id: resource-id2 role: resource-role2 id: constraint-id options: - name: score value: score-value - name: option-name value: option-value
您可以为资源集托管约束配置以下项目:
resource_sets
(必需)- 资源集合列表。-
resource_ids
(必需)- 资源列表。 -
options
(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id
(可选)- Same 值作为简单 colocation 约束。 -
options
(可选)- Same 值作为简单 colocation 约束。
资源集 colocation 约束的结构如下:
ha_cluster_constraints_colocation: - resource_sets: - resource_ids: - resource-id1 - resource-id2 options: - name: option-name value: option-value id: constraint-id options: - name: score value: score-value - name: option-name value: option-value
有关创建具有资源限制的集群的
ha_cluster
系统角色 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
(可选)- “名称-值”字典列表。
默认情况下,没有定义资源顺序限制。
简单资源顺序约束的结构如下:
ha_cluster_constraints_order: - resource_first: id: resource-id1 action: resource-action1 resource_then: id: resource-id2 action: resource-action2 id: constraint-id options: - name: score value: score-value - name: option-name value: option-value
您可以为资源集顺序约束配置以下项目:
resource_sets
(必需)- 资源集合列表。-
resource_ids
(必需)- 资源列表。 -
options
(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id
(可选)- 相同值作为简单顺序约束。 -
options
(可选)- 相同值作为简单顺序约束。
资源集顺序约束的结构如下:
ha_cluster_constraints_order: - resource_sets: - resource_ids: - resource-id1 - resource-id2 options: - name: option-name value: option-value id: constraint-id options: - name: score value: score-value - name: option-name value: option-value
有关创建具有资源限制的集群的
ha_cluster
系统角色 playbook 的示例,请参阅 配置具有资源限制的高可用性集群。ha_cluster_constraints_ticket
此变量定义资源 ticket 约束。资源票据限制表示依赖于特定票据的资源。有两种类型的资源 ticket 约束:一个资源的简单 ticket 约束,多个资源的 ticket 顺序约束。
您可以为简单资源票据约束配置以下项目:
resource
(必需)- 约束应用到的资源规格。-
id
(必需)- 资源 ID。 -
role
(可选)- 约束限制的资源角色:Started
、Unpromoted
,Promoted
。
-
-
ticket
(必需)- 资源所依赖的票据的名称。 -
id
(可选)- 约束 ID。如果未指定,它将自动生成。 options
(可选)- “名称-值”字典列表。-
loss-policy
(可选)- 在撤销 ticket 时要对资源执行的操作。
-
默认情况下,没有定义资源 ticket 约束。
简单资源票据约束的结构如下:
ha_cluster_constraints_ticket: - resource: id: resource-id role: resource-role ticket: ticket-name id: constraint-id options: - name: loss-policy value: loss-policy-value - name: option-name value: option-value
您可以为资源集票据约束配置以下项目:
resource_sets
(必需)- 资源集合列表。-
resource_ids
(必需)- 资源列表。 -
options
(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
ticket
(必需)- 相同值作为一个简单 ticket 约束。 -
id
(可选)- 相同值作为简单票据约束。 -
选项
(可选)- 相同值作为简单票据约束。
资源集 ticket 约束的结构如下:
ha_cluster_constraints_ticket: - resource_sets: - resource_ids: - resource-id1 - resource-id2 options: - name: option-name value: option-value ticket: ticket-name id: constraint-id options: - name: option-name value: option-value
有关创建具有资源限制的集群的
ha_cluster
系统角色 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
以重新生成qnetd
TLS 证书。如果重新生成了证书,则必须重新运行角色,以便每个集群再次连接到qnetd
主机,或者手动运行pcs
。
-
您无法在集群节点上运行
qnetd
,因为隔离会破坏qnetd
操作。有关使用仲裁设备配置集群的
ha_cluster
系统角色 playbook 示例,请参阅使用 仲裁设备配置集群。
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md
文件 -
/usr/share/doc/rhel-system-roles/ha_cluster/
directory