Pacemaker — Кластер высокой доступности — как получать уведомления

У меня есть кластер высокой доступности, настроенный с ресурсом DRBD.

Есть ли способ получить уведомление, например, по электронной почте, когда ресурс вышел из строя?

Я использую интерфейс кардиостимулятора высокой доступности веб-интерфейса (GUI), но я не нашел способ сделать это.


person Lidor Aviman    schedule 03.05.2017    source источник


Ответы (1)


Есть несколько способов добиться этого.

Лучший способ, вероятно, настроить уведомления в 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 [email protected]";
    out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh [email protected]";
}

Очевидно, что есть много способов снять шкуру с пресловутого кота, но я надеюсь, что эта информация окажется полезной!

person Matt Kereczman    schedule 04.05.2017