11.7. 配置具有隔离级别的高可用性集群
(RHEL 9.4 及更高版本)以下流程使用 ha_cluster
系统角色创建一个定义了隔离级别的高可用性集群。
警告
ha_cluster
系统角色替换指定节点上任何现有的群集配置。playbook 中未指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 清单文件指定集群节点,如 为 ha_cluster 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅 在 RHEL 9 上准备一个控制节点。
流程
将您的敏感变量存储在一个加密文件中:
创建 vault :
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:cluster_password: <cluster_password> fence1_password: <fence1_password> fence2_password: <fence2_password>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个 playbook 文件,如
~/playbook.yml
。这个示例 playbook 文件配置一个运行firewalld
和selinux
服务的集群。--- - name: Create a high availability cluster hosts: node1 node2 vars_files: - vault.yml tasks: - name: Configure a cluster that defines fencing levels ansible.builtin.include_role: name: rhel-system-roles.ha_cluster vars: ha_cluster_cluster_name: my-new-cluster ha_cluster_hacluster_password: "{{ cluster_password }}" ha_cluster_manage_firewall: true ha_cluster_manage_selinux: true ha_cluster_resource_primitives: - id: apc1 agent: 'stonith:fence_apc_snmp' instance_attrs: - attrs: - name: ip value: apc1.example.com - name: username value: user - name: password value: "{{ fence1_password }}" - name: pcmk_host_map value: node1:1;node2:2 - id: apc2 agent: 'stonith:fence_apc_snmp' instance_attrs: - attrs: - name: ip value: apc2.example.com - name: username value: user - name: password value: "{{ fence2_password }}" - name: pcmk_host_map value: node1:1;node2:2 # Nodes have redundant power supplies, apc1 and apc2. Cluster must # ensure that when attempting to reboot a node, both power # supplies # are turned off before either power supply is turned # back on. ha_cluster_stonith_levels: - level: 1 target: node1 resource_ids: - apc1 - apc2 - level: 1 target: node2 resource_ids: - apc1 - apc2
验证 playbook 语法:
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md
文件 -
/usr/share/doc/rhel-system-roles/ha_cluster/
目录 - Ansible vault