配置 MailTo 通知
大多数系统管理员喜欢在资源迁移到不同节点时收到通知,因为这通常表明节点有问题。
获取此类通知的最简单方法之一是将 MailTo 资源添加到资源组。
无论何时启动或者停止资源组,MailTo 资源都会向配置的地址发送一封电子邮件。
例如,将一个Mail To资源添加到重要组资源组,发送邮件到admin@exarnple.com,主题前缀为 importantgroup notification ,可以使用以下命令:
# pcs resource create importantgroup-mailto MailTo \ > email=admin@example.com \ > subject="importantgroup notification" \ > --group importantgroup
MailTo 资源代理使用 mailx 命令发送消息。
系统管理员有责任确保安装了 mailx 包,并且允许来自集群节点的传出 SMTP 连接。
由于 mailx 使用本地 MTA 发送消息,本地 MTA(例如后缀)必须配置为在必要时使用智能主机。
使用 ClusterMon 进行集群监控
对于更详细的监控,红帽高可用性添加组件附带 crm_mon 实用程序,以及围绕该实用程序构建的资源代理: ClusterMon 。
crm_mon 可以生成 HTML、XML、可用作 CGI 脚本的 HTML、Nagios 友好格式等格式的集群状态报告。
它可以在一次性模式下使用,在这种模式下它生成一次输出迭代并退出,或者它可以保持活动状态,更新磁盘上的状态文件,并在状态发生变化时有选择地调用外部程序。
使用 ClusterMon 资源代理时,有许多重要选项可用:
选项 | 用法 |
---|---|
user | 运行 crm_mon 实用程序的用户。 默认为root。 |
update | 磁盘上 HTML 文件更新之间的时间间隔(以秒为单位)。 默认为 15 秒。 |
extra_options | 要传递给 crrn_mon 的任何另外命令行选项。 有关可能性,请参阅 man crm_mon。 |
htrnlfile | 所需输出文件的完整路径。 默认为 /tmp/ClusterMon_[RESOURCENAME].html。 |
创建单个 ClusterMon 资源时,管理员将面临的问题之一是它只会报告一个节点所看到的集群状态。
一种解决方案是为每个节点创建一个 ClusterMon 实例,并使用资源约束将每个实例固定到特定节点。
不是理想的情况,但确实存在更简单的解决方案。
资源克隆
每当需要在每个节点上运行资源副本时,都可以使用资源克隆。
每当克隆资源时,都会在集群中的每个节点上启动该资源的副本。
要创建克隆资源,请在创建新资源时将 -clone 选项添加到 pcs resource create 命令的末尾。
要克隆现有资源,可以使用命令 pcs resource clone [RESOURCE] 命令。
可以使用 pcs resource unclone 命令删除现有的克隆。
将外部通知代理与 ClusterMon 配合使用
使用 ClusterMon 配置电子邮件或者 SNMP 通知需要执行实际通知的外部程序或者脚本。
然后可以使用 ClusterMon 的 extra_options 字段中的 -E [SCRIPT] 选项调用这些脚本。
此外,-e [RECIPIENT] 选项还可用于指定预期收件人。
此选项传递给使用 -E 定义的脚本。
使用名为 CRM_notify_ * 的环境变量将参数传递到外部代理脚本中。
以下是可用于在 eve,y 资源更改时发送电子邮件的示例脚本。
生产中使用的脚本需要更积极地过滤要传递的消息,以免向通知邮箱发送垃圾邮件。
#!/bin/bash MAILTO=${CRM_notify_recipient:-root@localhost} mutt -s "Cluster event from node ${CRM_notify_node}" ${MAILTO} << EOF A cluster event was triggered by ${CRM_notify_rsc} on ${CRM_notify_node}. This event was triggered by a ${CRM_notify_task} event. -- This mail has been generated automatically EOF
将此脚本存储为 /usr/local/bin/myagent.sh ,使用此脚本的 ClusterMon 资源可以配置如下:
# pcs resource create myagent ClusterMon \ > extra_options="-E /usr/local/bin/myagent.sh \ > -e admin@example.com" \ > --clone