Кардиостимулятор - кластер высокой доступности - как получать уведомления
У меня есть кластер высокой доступности, который настроен с ресурсом DRBD.
Есть ли способ получить уведомление, например, по электронной почте, когда ресурс вышел из строя?
Я использую интерфейс кардиостимулятора высокой доступности Web UI (GUI), но я не нашел способа сделать это.
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 admin@acme.com";
out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh admin@acme.com";
}
Очевидно, что существует много способов снять шкуру с пресловутой кошкой, но я надеюсь, что эта информация будет полезной!