Настройка событий
Написание скриптов для настраиваемых событий
Настраиваемые события HACMP и средство уведомления об ошибках требуют написания скриптов.
Необходимо учитывать следующее:
- нужно протестировать все возможные входные параметры;
- надо протестировать условные переходы, т. е. все переходы if и case ;
- необходимо выполнить обработку кодов завершения и возвращаемых значений для всех внешних команд;
- следует обеспечить правильное возвращаемое значение: 0 для успешного выполнения, любое другое число для неуспешного выполнения;
- выполнение скрипта должно занимать разумное количество времени;
- необходимо протестировать максимально возможное количество сценариев;
- при отказе скрипта происходит отказ кластера;
- программа восстановления должна быть способна выполнить восстановление после отказа события, в противном случае произойдет отказ кластера;
- нужно сохранять свои скрипты в отдельном каталоге, например в каталоге /usr/ha.
Команды пред- и постобработки событий HACMP
Конфигурация может содержать специальные аппаратные и программные компоненты, для которых HACMP не сможет осуществлять управление по умолчанию. В таких случаях можно добавлять собственные скрипты пред- и постобработки событий. Типичным применением является управление удаленным копированием с диска на диск на подсистемах хранения сторонних производителей.
Для всех предопределенных событий HACMP можно определить скрипт предобработки, скрипт постобработки, метод уведомления и команду восстановления:
- Скрипт предобработки событий. Выполняется перед выполнением события HACMP.
- Скрипт постобработки событий. Выполняется после выполнения события HACMP.
- Метод уведомления. Выполняется до и после события HACMP. Он отправляет системному администратору сообщение о начале или завершении события.
- Команда восстановления. Выполняется только при отказе события HACMP.
- При успешном выполнении метода восстановления событие также будет считаться успешным, независимо от результата скрипта обработки события1Здесь ошибка: при успешном выполнении команды восстановления основной скрипт события запускается повторно. .
HACMP передает несколько аргументов в скрипты событий, которые вы можете использовать в своей программе. Табл. 12.1 содержит аргументы скриптов преди постобработки событий.
Завершающие аргументы. Аргументы предопределенного скрипта обработки события HACMP. Они определяются в заголовке командного файла события. Предопределенные командные файлы событий HACMP хранятся в каталоге /usr/es/sbin/ cluster/events. Например, просмотрим файл события swap_adapter ( пример 12.1 ):
/usr/es/sbin/cluster/events# nwre swap_adapter # # Arguments: nodename network ip_addressl ip_address2 # # ip_addressl the new available address # this script swaps the service adapter to # ip_address2 - the failed addressПример 12.1. Файл события /usr/es/sbin/cluster/events/swap_adapter
Как видим, событие имеет следующие аргументы:
- nodename – имя узла;
- network – имя сети;
- ip_address1 – новый доступный адрес;
- ip_address2 – отказавший адрес.
Те же завершающие аргументы передаются в пользовательские скрипты преди постобработки событий.
Выбор события
По умолчанию HACMP обрабатывает группы ресурсов параллельно, что уменьшает количество событий кластера. Некоторые события выполняются только один раз, тогда как другие вообще не выполняются.
Некоторые события выполняются, только если для группы ресурсов установлен последовательный режим обработки. Мы рекомендуем выполнить несколько тестов запуска/остановки кластера и перемещения при сбое и просмотреть файл /tmp/ hacmp.out. Это даст вам представление о конфигурации/сценарии, в которых выполняется событие, которое вы собираетесь изменить.
Установка скриптов пред- и постобработки
Мы покажем, как установить скрипт пред- и постобработки событий, на примере. У нас имеется дисковая подсистема стороннего производителя, которая требует дополнительного конфигурирования, прежде чем мы сможем активизировать группу томов. Нам требуется выполнить скрипт предобработки события get_disk_vg_fs. Также нужно отправить уведомление системному администратору при запуске или завершении события.
- Напишите и тщательно протестируйте скрипт обработки события. Скопируйте
файлы на все узлы с использованием одинакового пути и имени. Рекомендуется также поместить созданные файлы под контроль наборов файлов HACMP (5.2 и выше).
В нашем примере мы создали два shell-скрипта: скрипт предобработки события ( /
usr/ha/pre_get_disk_vg_fs, см.
пример 12.2
) для выполнения конфигурирования OEMдисков и команды уведомления ( /usr/ha/notify_get_disk_vg_fs,
пример 12.3
).
fl/bin/ksh # Checking the arguments # Event name EVENT=$1 # Check the event name if [ "SEVENT" != Mget_disk_vg_fsH ] then echo Ops! We were not supposed to run in event SEVENT! exit 0 fi / Run the OEM disk setup command /oem_setup disk if [ $ ?!- 0 ] then echo Error setting up OEM disk! exit -1 fi exit 0
Пример 12.2. Образец скрипта предобработки события (/usr/ha/pre_get_disk_vg_fs)#!/bin/ksh # Sample event notification command # Processing the arguments # Event name EVENT=$1 #Event status: start or complete STATUS=$2 # Result of the event, if status=complete RESULT=$3 # Notify root that the has event started if [ "SSTATUS" == "start" ] then mail -s "Event notification" root "E0F1 Event $EVENT started. E0F1 fi # Notify the root that the event has completed and send the return code if [ "$STATUS" == "complete" ] then mail -s "Event notification" root <<E0F2 Event SEVENT completed, the result is SRESULT E0F2 fi exit 0
Пример 12.3. Образец метода уведомления (/usr/ha/notify_get_disk_vg_fs) - Определите команды пред- и постобработки события:
- Выполните smit hacmp.
- Выберите Extended Configuration (Расширенное конфигурирование).
- Выберите Extended Event Configuration (Расширенное конфигурирова ние событий).
- Выберите Configure Pre/Post-Event Commands (Конфигурирование ко манд пред- и постобработки событий).
- Выберите Add a Custom Cluster Event (Добавление настраиваемого со бытия кластера).
- Введите следующую информацию:
- Cluster Event Name (Имя события кластера). Короткое имя события; в даль нейшем используется это имя, а не имя файла. Наш образец предобработки собы тия имеет название pre_get_disk_vg_fs.
- Cluster Event Description (Описание события кластера). Краткое описание вашего скрипта.
- Cluster Event Script Filename (Имя файла скрипта обработки события кластера). Имя файла скрипта пред-/постобработки события с полным путем. См. экран SMIT на рис. 12.1. Здесь можно определить только скрипты пред- и постобработки событий. Скрипты уведомления и восстановления должны определяться отдельно через панель SMIT Change/Show Pre-Defined HACMP Events (Изменить/вывести предопределенные события HACMP). Дополнительные сведения см. на этапе 3.
- Свяжите скрипт пред-/постобработки с предопределенным событием HACMP:
- Запустите smit hacmp.
- Выберите Extended Configuration (Расширенное конфигурирование).
- Выберите Extended Event Configuration (Расширенное конфигурирование событий).
- Выберите Change/Show Pre-Defined HACMP Events (Изменить/вывести предопределенные события HACMP).
- Выберите событие, которое требуется изменить (рис. 12.2).
- Введите следующие значения (рис. 12.3):
- Notify Command (Команда уведомления). (Необязательно). Полное имя (включая путь) скрипта уведомления, если он имеется. В нашем примере используется /usr/ha/notify_get_disk_vg_fs.
- Pre-event Command (Команда предобработки события). (Необязательно). Имя настраиваемого события кластера, которое требуется выполнить в качестве скрипта предобработки события. Нажмите F4 для вывода списка уже определенных настраиваемых событий кластера. В нашем примере используется pre_get_ disk_vg_fs.
- Post-event Command (Команда постобработки события). (Необязательно). Имя настраиваемого события кластера, которое требуется выполнить в качестве скрипта постобработки события. Нажмите F4 для вывода списка уже определенных настраиваемых событий кластера.
- Recovery Command (Команда восстановления). (Необязательно). Полное имя (включая путь) скрипта восстановления.
- Recovery Counter (Счетчик восстановления). Количество попыток выполнения команды восстановления. По умолчанию установлено значение 0. Если установлено значение больше нуля, то при успешном выполнении команды восстановления событие запускается повторно.
- Выполните верификацию и синхронизацию кластера.