11.8. 使用资源限制配置高可用性集群
在配置集群时,您可以指定集群资源的行为,以符合您应用程序的要求。您可以通过配置资源约束来控制集群资源的行为。
您可以定义以下类别的资源约束:
- 位置约束,其决定资源可在哪些节点上运行。有关位置约束的详情,请参阅 确定资源可在哪些节点上运行。
- 排序约束,其决定资源运行的顺序。有关对约束排序的详情,请参考 确定集群资源运行的顺序。
- 托管约束,指定一个资源的位置取决于另一个资源的位置。有关托管约束的详情,请参考 托管集群资源。
- 票据约束,其指示依赖于特定 Booth 票据的资源。有关 Booth 票据约束的详情,请参考 多站点 Pacemaker 集群。
以下流程示例使用 ha_cluster
RHEL 系统角色创建高可用性集群,其中包含资源位置约束、资源托管约束、资源顺序约束和资源票据约束。
警告
ha_cluster
RHEL 系统角色替换指定节点上任何现有集群配置。playbook 中未指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
您用于连接到受管节点的帐户对它们具有
sudo
权限。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 清单文件指定集群节点,如 为 ha_cluster RHEL 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅 在 RHEL 9 上准备一个控制节点。
流程
将敏感变量存储在加密的文件中:
创建 vault :
ansible-vault create ~/vault.yml
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:cluster_password: <cluster_password>
cluster_password: <cluster_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
ha_cluster_cluster_name: <cluster_name>
- 您要创建的集群的名称。
ha_cluster_hacluster_password: <password>
-
hacluster
用户的密码。hacluster
用户对集群具有完全访问权限。 ha_cluster_manage_firewall: true
-
确定
ha_cluster
RHEL 系统角色是否管理防火墙的变量。 ha_cluster_manage_selinux: true
-
确定
ha_cluster
RHEL 系统角色是否使用selinux
RHEL 系统角色管理防火墙高可用性服务的端口的变量。 ha_cluster_resource_primitives: <cluster_resources>
- 由 ha_cluster RHEL 系统角色配置的 Pacemaker 资源的资源定义的列表,包括隔离
ha_cluster_constraints_location: <location_constraints>
- 定义资源位置约束的变量。
ha_cluster_constraints_colocation: <colocation_constraints>
- 定义资源托管约束的变量。
ha_cluster_constraints_order: <order_constraints>
- 定义资源顺序约束的变量。
ha_cluster_constraints_ticket: <ticket_constraints>
- 定义 Booth 票据约束的变量。
验证 playbook 语法:
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow