Red Hat Training

A Red Hat training course is available for RHEL 8

第 27 章 为集群事件触发脚本

Pacemaker 集群是一个事件驱动的系统,其中事件可能是资源或节点故障、配置更改或资源启动或停止。您可以将 Pacemaker 集群警报配置为在集群事件发生时执行一些外部操作,警报代理是集群调用的外部程序,其方式与集群调用的资源代理处理资源配置和操作相同。

集群使用环境变量将事件信息传递给代理。代理可以执行任何操作,比如发送电子邮件信息或登录到某个文件或更新监控系统。

  • Pacemaker 提供几个示例警报代理,这些代理默认安装在 /usr/share/pacemaker/alerts 中。这些样本脚本可以像现在一样复制和使用,或者可作为模板使用,以适应您的目的。关于它们支持的所有属性,请参考样本代理的源代码。
  • 如果示例警报代理不满足您的需要,您可以编写自己的警报代理来调用。

27.1. 安装并配置示例警报代理

当使用示例警报代理时,您应该检查该脚本以确保它适合您的需要。这些示例代理是作为特定集群环境自定义脚本的起点。请注意,红帽支持警报代理脚本用来与 Pacemaker 通信的界面,但红帽并不支持自定义代理本身。

要使用示例警报代理中的一个,您必须在集群中的每个节点上安装代理。例如,以下命令将 alert_file.sh.sample 脚本安装为 alert_file.sh

# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh

安装脚本后,您可以创建使用该脚本的警报。

以下示例配置了使用安装的 alert_file.sh 警报代理将事件记录到文件中的警报。以用户 hacluster 身份运行的警报代理,该用户具有最小权限集。

这个示例创建日志文件 pcmk_alert_file.log,该文件将用于记录事件。然后,它会创建警报代理,并添加到日志文件的路径作为其接收者。

# touch /var/log/pcmk_alert_file.log
# chown hacluster:haclient /var/log/pcmk_alert_file.log
# chmod 600 /var/log/pcmk_alert_file.log
# pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh
# pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log

以下示例将 alert_snmp.sh.sample 脚本安装为 alert_snmp.sh,并配置使用安装的 alert_snmp.sh 警报代理将集群事件作为 SNMP 陷阱发送的警报。默认情况下,该脚本会发送除成功监控调用 SNMP 服务器外的所有事件。这个示例将时间戳格式配置为 meta 选项。配置警报后,本例配置警报的接收者并显示警报配置。

# install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
# pcs alert create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N"
# pcs alert recipient add snmp_alert value=192.168.1.2
# pcs alert
Alerts:
 Alert: snmp_alert (path=/var/lib/pacemaker/alert_snmp.sh)
  Meta options: timestamp-format=%Y-%m-%d,%H:%M:%S.%01N.
  Recipients:
   Recipient: snmp_alert-recipient (value=192.168.1.2)

以下示例安装 alert_smtp.sh 代理,然后配置使用安装的警报代理将集群事件作为电子邮件消息发送的警报。配置警报后,本示例配置了接收方并显示警报配置。

# install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
# pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
# pcs alert recipient add smtp_alert value=admin@example.com
# pcs alert
Alerts:
 Alert: smtp_alert (path=/var/lib/pacemaker/alert_smtp.sh)
  Options: email_sender=donotreply@example.com
  Recipients:
   Recipient: smtp_alert-recipient (value=admin@example.com)