13.14. 使用 ha_cluster RHEL 系统角色为高可用性集群配置警报
(RHEL 9.5 及更高版本)当 Pacemaker 事件发生(如资源或节点故障或配置更改)时,您可能需要执行一些外部操作。例如,您可能想要发送一封电子邮件消息或记录到文件或更新监控系统。
您可以使用警报代理配置系统,来执行外部操作。这些是集群调用的外部程序,其方式与集群调用资源代理的方式相同,以处理资源配置和操作。集群通过环境变量将关于事件的信息传递给代理。
ha_cluster
RHEL 系统角色配置集群,以调用外部程序来处理警报。但是,您必须提供这些程序,并将它们分发到集群节点。
有关报警代理的详情,请参阅 为集群事件触发脚本。
这个示例流程使用 ha_cluster
RHEL 系统角色,以自动配置 Pacemaker 警报的方式创建高可用性集群。
ha_cluster
RHEL 系统角色替换指定节点上任何现有的集群配置。playbook 中未指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 清单文件指定集群节点,如 为 ha_cluster RHEL 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅 在 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>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Create a high availability cluster hosts: node1 node2 vars_files: - vault.yml tasks: - name: Configure a cluster with alerts 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_alerts: - id: alert1 path: /alert1/path description: Alert1 description instance_attrs: - attrs: - name: alert_attr1_name value: alert_attr1_value meta_attrs: - attrs: - name: alert_meta_attr1_name value: alert_meta_attr1_value recipients: - value: recipient_value id: recipient1 description: Recipient1 description instance_attrs: - attrs: - name: recipient_attr1_name value: recipient_attr1_value meta_attrs: - attrs: - name: recipient_meta_attr1_name value: recipient_meta_attr1_value
示例 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_alerts: <alert definitions>
定义 Pacemaker 警报的变量。
-
id
- 警报的 ID。 -
path
- 警报代理可执行文件的路径。 -
description
- 警报的描述信息。 -
instance_attrs
- 警报实例属性集合的列表。目前,只支持一个集合,因此第一个集合被使用,其余集合被忽略。 -
meta_attrs
- 警报元属性集合的列表。目前,只支持一个集合,因此第一个集合被使用,其余集合被忽略。 -
recipients
- 警报接收者的列表。 -
value
- 接收者的值。 -
id
- 接收者的 ID。 -
description
- 接收者的描述。 -
instance_attrs
- 接收者实例属性集合的列表。目前,只支持一个集合,因此第一个集合被使用,其余集合被忽略。 -
meta_attrs
- 接收者元属性集合的列表。目前,只支持一个集合,因此第一个集合被使用,其余集合被忽略。
-
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md
文件。验证 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