13.11. 使用仲裁设备配置高可用性集群
(RHEL 8.8 及更高版本),当配置单独的仲裁设备时,集群可以保持比标准仲裁规则允许更多的节点故障。仲裁设备充当集群的轻量级仲裁设备。对于偶数节点的集群,建议使用仲裁设备。对于双节点集群,使用仲裁设备可以更好地决定在脑裂情况下保留哪些节点。
有关仲裁设备的详情,请参考 配置仲裁设备。
要使用 ha_cluster
RHEL 系统角色配置带有独立仲裁设备的高可用性集群,首先请设置仲裁设备。设置仲裁设备后,您可以在任意数量的集群中使用该设备。
13.11.1. 配置仲裁设备
要使用 ha_cluster
RHEL 系统角色配置仲裁设备,请按照本例中的步骤操作。请注意,您不能在集群节点上运行仲裁设备。
ha_cluster
RHEL 系统角色替换指定节点上的任何现有集群配置。playbook 中指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 您要用来运行仲裁设备的系统有涵盖 RHEL 和 RHEL High Availability 附加组件的有效订阅。
- 清单文件指定仲裁设备,如 为 ha_cluster RHEL 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅在 RHEL 8 上准备控制节点。
步骤
将您的敏感变量存储在加密文件中:
创建密码库:
$ 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>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建包含以下内容的 playbook 文件,如
~/playbook-qdevice.yml
:--- - name: Configure a host with a quorum device hosts: nodeQ vars_files: - vault.yml tasks: - name: Create a quorum device for the cluster ansible.builtin.include_role: name: rhel-system-roles.ha_cluster vars: ha_cluster_cluster_present: false ha_cluster_hacluster_password: "{{ cluster_password }}" ha_cluster_manage_firewall: true ha_cluster_manage_selinux: true ha_cluster_qnetd: present: true
示例 playbook 中指定的设置包括:
ha_cluster_cluster_present: false
-
如果设为
false
,则该变量决定了所有集群配置都将从目标主机中删除。 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_qnetd: <quorum_device_options>
-
配置
qnetd
主机的变量。
验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook-qdevice.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook-qdevice.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md
文件 -
/usr/share/doc/rhel-system-roles/ha_cluster/
directory
13.11.2. 配置一个集群以使用仲裁设备
要将集群配置为使用仲裁设备,请按照本例流程中的步骤操作。
ha_cluster
RHEL 系统角色替换指定节点上的任何现有集群配置。playbook 中指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 清单文件指定集群节点,如 为 ha_cluster RHEL 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅在 RHEL 8 上准备控制节点。
- 您已配置了一个仲裁设备。
步骤
创建包含以下内容的 playbook 文件,如
~/playbook-cluster-qdevice.yml
:--- - name: Configure a cluster to use a quorum device hosts: node1 node2 vars_files: - vault.yml tasks: - name: Create cluster that uses a quorum device 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_quorum: device: model: net model_options: - name: host value: nodeQ - name: algorithm value: lms
示例 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_quorum: <quorum_parameters>
- 配置集群仲裁的变量,可以用来指定集群使用仲裁设备。
验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook-cluster-qdevice.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook-cluster-qdevice.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md
文件 -
/usr/share/doc/rhel-system-roles/ha_cluster/
directory