26.9. 使用 SBD 节点隔离配置高可用性集群
(RHEL 8.7 及更高版本) 使用 ha_cluster
系统角色创建一个使用 SBD 节点隔离的高可用性集群。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core
。注意您不需要在集群成员节点上安装
ansible-core
。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles
软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
警告
ha_cluster
系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
此 playbook 使用一个清单文件来加载 watchdog 模块(在 RHEL 8.9 及更新的版本中支持),如清单 中配置 watchdog 和 SBD 设备 中所述。
流程
- 创建一个清单文件,指定集群中配置 watchdog 和 SBD 设备的节点,如 在清单中配置 watchdog 和 SBD 设备 中所述。
创建一个 playbook 文件,如
new-cluster.yml
。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld
和selinux
服务的集群,它使用 SBD 隔离并创建 SBD Stonith 资源。此 playbook 使用一个清单文件来加载 watchdog 模块(在 RHEL 8.9 及更新的版本中支持),如清单 中配置 watchdog 和 SBD 设备 中所述。- hosts: node1 node2 vars: ha_cluster_cluster_name: my-new-cluster ha_cluster_hacluster_password: password ha_cluster_manage_firewall: true ha_cluster_manage_selinux: true ha_cluster_sbd_enabled: yes ha_cluster_sbd_options: - name: delay-start value: 'no' - name: startmode value: always - name: timeout-action value: 'flush,reboot' - name: watchdog-timeout value: 30 # Suggested optimal values for SBD timeouts: # watchdog-timeout * 2 = msgwait-timeout (set automatically) # msgwait-timeout * 1.2 = stonith-timeout ha_cluster_cluster_properties: - attrs: - name: stonith-timeout value: 72 ha_cluster_resource_primitives: - id: fence_sbd agent: 'stonith:fence_sbd' instance_attrs: - attrs: # taken from host_vars - name: devices value: "{{ ha_cluster.sbd_devices | join(',') }}" - name: pcmk_delay_base value: 30 roles: - linux-system-roles.ha_cluster
- 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
# ansible-playbook -i inventory new-cluster.yml