1

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

当资源失败时,有没有办法接收通知,例如电子邮件?

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

4

1 回答 1

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 通知感兴趣,您可以使用 DRBD 附带的一些处理程序脚本,方法是在handler{}部分启用它们/etc/drbd.d/global_common.conf,或者您可以将以下内容添加到您关心的资源配置中:

handlers {
    split-brain "/usr/lib/drbd/notify-split-brain.sh admin@acme.com";
    out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh admin@acme.com";
}

显然,有很多方法可以给众所周知的猫剥皮,但我希望这些信息对您有所帮助!

于 2017-05-04T15:18:49.187 回答