第 22 章 使用系统角色配置高可用性集群
使用 ha_cluster 系统角色,您可以配置和管理使用 Pacemaker 高可用性集群资源管理器的高可用性集群。
22.1. ha_cluster 系统角色变量 复制链接链接已复制到粘贴板!
在 ha_cluster 系统角色 playbook 中,根据集群部署的要求为高可用性集群定义变量。
您可以为 ha_cluster 系统角色设置的变量如下:
ha_cluster_enable_repos-
启用包含
ha_cluster系统角色所需软件包的存储库的布尔值标志。如果设置为yes(此变量的默认值),则您必须在将用作集群成员的系统上拥有有效的 RHEL 和 RHEL 高可用性附加组件的订阅,否则系统角色将失败。 ha_cluster_cluster_present布尔值标志(如果设为
yes)决定主机上的 HA 集群将根据传递给角色的变量进行配置。角色中没有指定且不受角色支持的任何集群配置都将丢失。如果
ha_cluster_cluster_present设为no,则将从目标主机中删除所有 HA 集群配置。此变量的默认值为
yes。以下示例 playbook 删除了
node1和node2上的所有集群配置Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_start_on_boot-
确定是否将集群服务配置为在引导时启动的布尔值标志。此变量的默认值为
yes。 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用户对集群具有完全访问权限。建议您加密密码,如 使用 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_cluster系统角色以这种方式生成新的密钥,您应该将密钥复制到节点的虚拟机监控程序,以确保隔离正常工作。如果设置了此变量,则忽略这个密钥的
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_regenerate_keys布尔值标志,当设置为
yes时,其决定将重新生成预共享密钥和 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变量的描述。此变量的默认值为
no。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 9.1 及更高版本) 设置集群传输方法。您使用这个变量配置的项目如下:
-
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_cluster系统角色 playbook 的示例,请参阅在高可用性集群中配置 Corosync 值。
-
ha_cluster_totem(RHEL 9.1 及更高版本) 配置 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_cluster系统角色 playbook 示例,请参阅在高可用性集群中配置 Corosync 值。ha_cluster_quorum(RHEL 9.1 及更高版本) 配置集群仲裁。您可以配置
auto_tie_breaker、last_man_standing、last_man_standing_window和wait_for_all仲裁选项。有关仲裁选项的详情,请查看votequorum(5) man page。ha_cluster_quorum变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置集群仲裁的
ha_cluster系统角色 playbook 的示例,请参阅在高可用性集群中配置 Corosync 值。ha_cluster_sbd_enabled(RHEL 9.1 和更高版本) 一个布尔值标记,它决定集群是否可以使用 SBD 节点隔离机制。此变量的默认值为
no。有关启用 SBD 的
ha_cluster系统角色 playbook 示例,请参阅使用 SBD 节点隔离配置高可用性集群。ha_cluster_sbd_options(RHEL 9.1 及更高版本) 指定 SBD 选项的 name-value 字典列表。支持的选项包括:
-
delay-start- 默认为no -
startmode- 默认为always -
timeout-action- 默认为flush,reboot watchdog-timeout- 默认为5有关这些选项的详情,请参考
sbd(8) man page 中的通过环境配置。有关用于配置 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_resource_primitives此变量定义由系统角色配置的 pacemaker 资源,包括 stonith 资源。您可以为每个资源配置的项目如下:
-
id(必需)- 资源的 ID。 -
agent(必需)- 资源或 stonith 代理的名称,如ocf:pacemaker:Dummy或stonith:fence_xvm。必须为 stonith 代理指定stonith:。对于资源代理,可以使用短名称,如Dummy,而不是ocf:pacemaker:Dummy。但是,如果安装了多个具有相同短名称的代理,则角色将失败,因为它将无法决定应使用哪个代理。因此,建议您在指定资源代理时使用全名。 -
instance_attrs(可选) - 资源的实例属性集合列表。目前,只支持一个集合。属性的确切名称和值,以及它们是否为必选的,这取决于资源还是 stonith 代理。 -
meta_attrs(可选) - 资源的元属性集合列表。目前,只支持一个集合。 operations(可选) - 资源操作列表。-
action(必需)- pacemaker 以及资源或 stonith 代理定义的操作。 -
attrs(必需)- 操作选项,必须至少指定一个选项。
-
-
使用
ha_cluster系统角色配置的资源定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下不定义任何资源。
有关包含资源配置的
ha_cluster系统角色 playbook 示例,请参阅 配置具有隔离和资源的高可用性集群
.
ha_cluster_resource_groups此变量定义由系统角色配置的 pacemaker 资源组。您可以为每个资源组配置的项目如下:
-
id(必需)- 组的 ID. -
resources(必需) - 组的资源列表.每个资源通过其 ID 引用,资源必须在ha_cluster_resource_primitives变量中定义。必须至少列出一个资源。 -
meta_attrs(可选) - 组的元属性集合列表。目前,只支持一个集合。
-
使用
ha_cluster系统角色配置的资源组定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,不定义任何资源组。
有关包含资源组配置的
ha_cluster系统角色 playbook 示例,请参阅 配置据有隔离和资源的高可用性集群
.
ha_cluster_resource_clones此变量定义由系统角色配置的 pacemaker 资源克隆。您可以为资源克隆配置的项目如下:
-
resource_id(必需)- 要克隆的资源.资源必须在ha_cluster_resource_primitives变量或ha_cluster_resource_groups变量中定义。 -
promotable(可选)- 表示要创建的资源克隆是否是可升级的克隆,表示为yes或no。 -
id(可选)- 克隆的自定义 ID。如果未指定 ID,将会生成它。如果集群不支持这个选项,则会显示一个警告。 -
meta_attrs(可选)- 克隆的元属性集合列表。目前,只支持一个集合。
-
使用
ha_cluster系统角色配置的资源克隆定义的结构如下。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,没有定义资源克隆。
有关包含资源克隆配置的
ha_cluster系统角色 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_cluster系统角色 playbook 示例,请参阅 配置具有资源约束的高可用性集群
.
ha_cluster_constraints_colocation此变量定义资源 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 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集 colocation 约束配置的项目如下:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id(可选)- Same 值作为简单 colocation 约束。 -
options(可选)- Same 值作为简单 colocation 约束。
资源集 colocation 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
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(可选)- “名称-值”字典列表。
默认情况下,没有定义资源顺序限制。
简单资源顺序约束的结构如下:
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_cluster系统角色 playbook 示例,请参阅 配置具有资源约束的高可用性集群
.
ha_cluster_constraints_ticket此变量定义资源 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 您可以为资源设置 ticket 约束配置的项目如下:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
ticket(必需)- 相同值作为一个简单 ticket 约束。 -
id(可选)- 相同值作为简单票据约束。 -
选项(可选)- 相同值作为简单票据约束。
资源集 ticket 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_cluster系统角色 playbook 示例,请参阅 配置具有资源约束的高可用性集群
.