Pacemaker - 高可用性集群 - 如何接收通知

时间:2017-05-03 06:25:17

标签: cluster-computing high-availability pacemaker drbd

我有一个配置了DRBD资源的高可用性集群。

当资源出现故障时,有没有办法接收通知,例如电子邮件?

我正在使用Web UI(GUI)高可用性起搏器界面,但我找不到这样做的方法。

1 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标。

最好的方法可能是在Pacemaker中配置通知。 Pacemaker支持内置的SNMP,SMTP和自定义通知代理.Pacemaker文档是开始研究的好地方:http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/ch07.html

但是,作为一个例子,如果你想编写自己的通知代理,你可以在集群可以访问的地方创建一个脚本,比如/usr/local/bin/notification-script-example.sh,如下所示:

#!/bin/bash
### list of variables passed from Pacemaker to all alert agents:
# CRM_notify_recipient the configure recipient
# CRM_notify_node name of affected node
# CRM_notify_desc details about event
# CRM_notify_task requested fencing/resource opertion (fencing and resource notify only)
# CRM_notify_rc return code from operation (fencing and resource notify only)
# CRM_notify_rsc name of the affected resource (resource notify only)
# CRM_notify_target_rc expected return code of an operation (resource notify only)
# CRM_notify_status numerical code used by Pacemaker to represent operation result (resource notify only)

### some variables won't get values; set NA if not populated:
CRM_notify_recipient="${CRM_notify_recipient:-NA}"
CRM_notify_node="${CRM_notify_node:-NA}"
CRM_notify_desc="${CRM_notify_desc:-NA}"
CRM_notify_task="${CRM_notify_task:-NA}"
CRM_notify_rc="${CRM_notify_rc:-NA}"
CRM_notify_rsc="${CRM_notify_rsc:-NA}"
CRM_notify_target_rc="${CRM_notify_target_rc:-NA}"
CRM_notify_status="${CRM_notify_status:-NA}"

### do something with these values
logger "PCMK-NOTIFY: recipient: $CRM_notify_recipient"
logger "PCMK-NOTIFY: affected node: $CRM_notify_node"
logger "PCMK-NOTIFY: event details: $CRM_notify_desc"
logger "PCMK-NOTIFY: requested op: $CRM_notify_task"
logger "PCMK-NOTIFY: op ret code: $CRM_notify_rc"
logger "PCMK-NOTIFY: affected res: $CRM_notify_rsc"
logger "PCMK-NOTIFY: expected rc: $CRM_notify_target_rc"
logger "PCMK-NOTIFY: pcmk result: $CRM_notify_status"

### exit
exit 0

然后,您将使用ClusterMon资源代理将起搏器内部的通知代理配置为原语,然后克隆它,使其在所有节点上运行(采用crmsh语法):

primitive cluster-notifications ocf:pacemaker:ClusterMon \
    params user=root update=30 extra_options="--watch-fencing \
    -E /usr/local/bin/notification-agent-example.sh"
clone cl-cluster-notifications cluster-notifications

对于您的脚本,听起来好像您想要发送电子邮件,因此您只需要更改脚本的### do something with these values部分即可通过电子邮件发送所有内容,而不是只记录。

在Pacemaker中获取事件通知的另一种方法是使用MailTo资源代理在集群中创建ocf:heartbeat:MailTo原语。它会在集群中启动或停止的任何时候发送电子邮件,因此通常您会要求它在集群中的其他所有内容之后启动它;这将确保它最后启动并在发生迁移/故障转移时首先停止。

如果您只对DRBD通知感兴趣,可以在handler{}的{​​{1}}部分中启用DRBD附带的一些处理程序脚本,或者您可以添加关注您关心的资源配置:

/etc/drbd.d/global_common.conf

显然,有许多方法可以让这只谚语变得有趣,但我希望这些信息有用!