Реализация мультипроцессорных кластеров высокой доступности (HACMP)

Настройка событий

Разбить на страницы
Показывать лекцию целиком

Написание скриптов для настраиваемых событий

Настраиваемые события HACMP и средство уведомления об ошибках требуют написания скриптов.

Необходимо учитывать следующее:

  • нужно протестировать все возможные входные параметры;
  • надо протестировать условные переходы, т. е. все переходы if и case ;
  • необходимо выполнить обработку кодов завершения и возвращаемых значений для всех внешних команд;
  • следует обеспечить правильное возвращаемое значение: 0 для успешного выполнения, любое другое число для неуспешного выполнения;
  • выполнение скрипта должно занимать разумное количество времени;
  • необходимо протестировать максимально возможное количество сценариев;
  • при отказе скрипта происходит отказ кластера;
  • программа восстановления должна быть способна выполнить восстановление после отказа события, в противном случае произойдет отказ кластера;
  • нужно сохранять свои скрипты в отдельном каталоге, например в каталоге /usr/ha.
  • Важно! Кластер не будет продолжать обработку событий, пока не завершится выполнение настраиваемых скриптов пред- и постобработки событий.

    Команды пред- и постобработки событий HACMP

    Конфигурация может содержать специальные аппаратные и программные компоненты, для которых HACMP не сможет осуществлять управление по умолчанию. В таких случаях можно добавлять собственные скрипты пред- и постобработки событий. Типичным применением является управление удаленным копированием с диска на диск на подсистемах хранения сторонних производителей.

    Для всех предопределенных событий HACMP можно определить скрипт предобработки, скрипт постобработки, метод уведомления и команду восстановления:

  • Скрипт предобработки событий. Выполняется перед выполнением события HACMP.
  • Скрипт постобработки событий. Выполняется после выполнения события HACMP.
  • Метод уведомления. Выполняется до и после события HACMP. Он отправляет системному администратору сообщение о начале или завершении события.
  • Команда восстановления. Выполняется только при отказе события HACMP.
  • При успешном выполнении метода восстановления событие также будет считаться успешным, независимо от результата скрипта обработки событияЗдесь ошибка: при успешном выполнении команды восстановления основной скрипт события запускается повторно. .
  • HACMP передает несколько аргументов в скрипты событий, которые вы можете использовать в своей программе. Табл. 12.1 содержит аргументы скриптов преди постобработки событий.

    Аргументы скриптов пред- и постобработки событий
    Скрипт Аргументы
    Предобработки события Имя события, завершающие аргументы
    Постобработки события Имя события, код завершения события, завершающие аргументы
    Метод уведомления Имя события, ключевое слово: start или complete; код завершения (для ключевого слова complete), завершающие аргументы
    Команда восстановления Имя события, завершающие аргументы

    Завершающие аргументы. Аргументы предопределенного скрипта обработки события 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

    Как видим, событие имеет следующие аргументы:

  • nodename – имя узла;
  • network – имя сети;
  • ip_address1 – новый доступный адрес;
  • ip_address2 – отказавший адрес.
  • Те же завершающие аргументы передаются в пользовательские скрипты преди постобработки событий.

    Внимание! Не изменяйте встроенные файлы событий: это не поддерживается и небезопасно. Всегда используйте скрипты пред- и постобработки событий.

    Выбор события

    По умолчанию HACMP обрабатывает группы ресурсов параллельно, что уменьшает количество событий кластера. Некоторые события выполняются только один раз, тогда как другие вообще не выполняются.

    Некоторые события выполняются, только если для группы ресурсов установлен последовательный режим обработки. Мы рекомендуем выполнить несколько тестов запуска/остановки кластера и перемещения при сбое и просмотреть файл /tmp/ hacmp.out. Это даст вам представление о конфигурации/сценарии, в которых выполняется событие, которое вы собираетесь изменить.

    Установка скриптов пред- и постобработки

    Мы покажем, как установить скрипт пред- и постобработки событий, на примере. У нас имеется дисковая подсистема стороннего производителя, которая требует дополнительного конфигурирования, прежде чем мы сможем активизировать группу томов. Нам требуется выполнить скрипт предобработки события get_disk_vg_fs. Также нужно отправить уведомление системному администратору при запуске или завершении события.

    Замечание. HACMP поддерживает конфигурирование скриптов пред-/постобработки событий в подключенном состоянии.
  • Напишите и тщательно протестируйте скрипт обработки события. Скопируйте файлы на все узлы с использованием одинакового пути и имени. Рекомендуется также поместить созданные файлы под контроль наборов файлов 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
    Этот скрипт выполняет проверку аргументов события, после чего вызывает программу конфигурирования дисковой подсистемы стороннего производителя.
    #!/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
    Этот образец программы уведомления отправляет сообщение электронной почты пользователю root с кодом завершения события 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(рис 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 для вывода списка уже определенных настраиваемых событий кластера.(рис 12.3) Выбор изменяемого события(рис 12.2) Изменение предопределенного события кластера
  • Recovery Command (Команда восстановления). (Необязательно). Полное имя (включая путь) скрипта восстановления.
  • Recovery Counter (Счетчик восстановления). Количество попыток выполнения команды восстановления. По умолчанию установлено значение 0. Если установлено значение больше нуля, то при успешном выполнении команды восстановления событие запускается повторно.
  • Выполните верификацию и синхронизацию кластера.
  • Замечание. При настройке автоматического обновления набора файлов HACMP_Files автоматически выполняется распространение настраиваемых файлов событий по узлам кластера. Дополнительные сведения о наборах файлов см. в разделе 8.2, "Наборы файлов".

    Уведомление об ошибках

    Средство уведомления об ошибках в HACMP является отличным инструментом мониторинга приложений и устройств, поддерживающим и использующим журналы ошибок AIX. При возникновении ошибки в приложении или устройстве, выполняется отправка сообщения в демон ведения журнала ошибок (error logger daemon, errdemon) с соответствующей информацией: датой, именем устройства или приложения, типом ошибки, описанием ошибки и прочей отладочной информацией. Демон errdemon записывает эти данные в файл журнала ошибок. Если уведомление об ошибках в HACMP настроено на этот тип ошибок, errdemon выполняет определенный пользователем метод уведомления/восстановления.

    Автоматическое уведомление об ошибках

    HACMP может сконфигурировать уведомление об ошибках и действие восстановления для некоторых типов ресурсов и ошибок:

  • диски Rootvg;
  • все диски, определенные в группе ресурсов HACMP;
  • SCSI-адаптеры, используемые ресурсами HACMP или rootvg;
  • адаптеры Fibre Channel, используемые ресурсами HACMP;
  • адаптер SP Switch.
  • Для серьезных, необратимых ошибок настраивается инициирование перехвата с использованием команды /usr/es/sbin/cluster/diag/cl_failover. При некритических ошибках /usr/es/sbin/cluster/diag/cl_logerror отправляет сообщение электронной почты пользователю root и записывает ошибку в файл /tmp/hacmp.out.

    Рассмотрение мониторинга дисков

    HACMP осуществляет мониторинг только для "традиционных" автономных дисков, например для встроенных SCSI-дисков или SSA-хранилищ. При обнаружении ошибок на дисках этого типа используются стандартные метки журнала ошибок AIX, такие,как DISK_ERR1 или SCSI_ERR3. Кроме того, HACMP может осуществлять мониторинг групп томов с полным зеркальным отображением, независимо от типа диска. В этом случае при обнаружении потери кворума (запись LVM_SA_QUORCLOSE в журнале ошибок) HACMP может инициировать перемещение.

    ESS, FAStT, DS4000 Series и другие современные дисковые подсистемы имеют встроенные средства обеспечения высокой доступности, так что они содержат встроенные механизмы восстановления после ошибок, например аппаратные функции RAID и multipath-подключения. Так как они имеют собственные драйверы устройств, при возникновении аппаратных ошибок они используют другие метки журнала ошибок. В разделе "Мониторинг общих дисков с уведомлением об ошибках HACMP", представлен пример мониторинга такой дисковой подсистемы.

    Настройка автоматического уведомления об ошибках

    Внимание. Нельзя сконфигурировать автоматическое уведомление об ошибках при работающем кластере.
  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите Add Error Notify Methods for Cluster Resources (Добавить методы уведомления об ошибках для ресурсов кластера).
  • HACMP добавляет автоматическое уведомление об ошибках на всех узлах.

    Внимание. Необходимо повторно добавлять автоматическое уведомление об ошибках при каждой верификации и синхронизации кластера.

    Вывод методов автоматического уведомления об ошибках

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите List Error Notify Methods for Cluster Resources (Вывести методы уведомления об ошибках для ресурсов кластера).
  • На рис. 12.4 представлен образец вывода методов автоматического уведомления об ошибках.

    (рис 12.4) Список методов автоматического уведомления об ошибках

    Удаление методов автоматического уведомления об ошибках

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите Remove Error Notify Methods for Cluster Resources (Удалить методы уведомления об ошибках для ресурсов кластера).
  • Выберите Remove Error Notify Methods for Cluster Resources (Удалить методы уведомления об ошибках для ресурсов кластера).
  • Использование уведомления об ошибках

    Можно вручную добавить объекты уведомления об ошибках для всех возможных типов ресурсов и ошибок. При создании объекта уведомления определяется набор правил или критериев типа ошибки, для которого следует осуществлять мониторинг. Эти правила могут включать метку для журнала ошибок, имя ресурса и т. д. При возникновении ошибки errlogger сопоставляет критерии, заданные в ODM-классе уведомления об ошибках, и в случае соответствия errdemon выполняет требуемый метод уведомления.

    Добавление метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите объект уведомления:
  • Notification Object Name (Имя объекта уведомления). Заданное пользователем имя, идентифицирующее объект уведомления об ошибках.
  • Persist across system restart? (Сохранять после перезапуска системы?). Yes – уведомление об ошибках будет использоваться постоянно; No – уведомление об ошибках будет использоваться только до следующей перезагрузки. Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления). Уведомление об ошибках отправляется от имени выбранного идентификатора процесса. По умолчанию применяется 0 (root)1; мы рекомендуем оставить здесь 0. При использовании ненулевого кода процесса следует установить для параметра Persist across system restart? (Сохранять после перезапуска системы?) значение No.
  • Select Error Class (Выбор класса ошибки). None – класс ошибок для сопоставления отсутствует; All – выполнять сопоставление для всех классов ошибок, Hardware – аппаратные ошибки, Software – программные ошибки, Errlogger – уведомления и сообщения оператора из программы errlogger.
  • Select Error Type (Выбор типа ошибки). None – тип ошибок для сопоставления отсутствует, All – выполнять сопоставление для всех типов ошибок, PEND– предстоящая потеря доступности, PERF – снижение производительности, PERM – постоянные ошибки, TEMP – временные ошибки, UNKN – неизвестный тип ошибки.
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?). Это поле предназначено для использования агентами оповещения приложений управления системами. None – игнорировать этот параметр, All – оповещение для всех ошибок, TRUE – сопоставлять ошибки с возможностью оповещения, FALSE – сопоставлять ошибки без возможности оповещения. Если у вас нет приложения удаленного управления, оставьте в этом поле значение None.
  • Select Error Label (Выбор метки ошибки). Нажмите F4, чтобы выбрать метку ошибки. Краткое описание меток ошибок см. в файле /usr/include/sys/errids.h. Resource Name (Имя ресурса). Имя отказавшего ресурса. Для класса аппаратных ошибок представляет имя устройства. Для класса программных ошибок представляет имя отказавшего исполняемого файла. Выберите All для сопоставления всех типов ресурсов.
  • Resource Class (Класс ресурса). Для класса аппаратного ресурса представляет класс устройства. Неприменимо к программным ошибкам. Выберите All для сопоставления всех классов ресурсов.
  • Resource Type (Тип ресурса). Тип устройства, под которым ресурс известен в объекте устройств. Применимо только к аппаратным ошибкам. Выберите All для сопоставления всех классов ресурсов.
  • Notify Method (Метод уведомления). Полное имя (включая путь) программы для запуска при регистрации ошибки, соответствующей критериям, определенным выше. В исполняемый файл можно передать следующие переменные:
    $1 – порядковый номер ошибки в журнале;
    $2 – идентификатор ошибки;
    $3 – класс ошибки;
    $4 – тип ошибки;
    $5 – флаг оповещения;
    $6 – имя ресурса отказавшего устройства;
    $7 – тип ресурса отказавшего устройства;
    $8 – класс ресурса отказавшего устройства;
    $9 – метка для регистрации в журнале ошибок.
    (рис 12.5) Добавление объекта уведомления об ошибках
  • Нажмите Enter для создания объекта уведомления об ошибках.
  • На рис. 12.5 показано, как добавить метод уведомления через SMIT.

    Изменение/вывод метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Change/Show a Notify Method (Изменение/вывод метода уведомления).
  • Выберите изменяемый метод уведомления из выпадающего списка.
  • Измените объект уведомления. Описание полей см. в разделе "Добавление метода уведомления".
  • Удаление метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Remove a Notify Method (Удаление метода уведомления).
  • Выберите удаляемый метод уведомления из выпадающего списка.
  • Нажмите Enter для удаления.
  • Тестирование метода уведомления

    Вы можете легко протестировать свои объекты уведомления. HACMP может эмулировать запись в журнале ошибок с использованием заданной меткой ошибки. Метка ошибки выводится в журнале ошибок, и метод уведомления запускается демоном errdemon.

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Emulate Error Log Entry (Эмуляция записи в журнал ошибок).
  • Выберите метку ошибки или метод уведомления из выпадающего списка. Здесь выводятся только те методы уведомления, для которых определены метки ошибок.
  • SMIT выводит метку ошибки, имя объекта уведомления и метод уведомления. Нажмите Enter для подтверждения эмуляции записи в журнал ошибок.
  • Мониторинг общих дисков с использование функции уведомления об ошибках HACMP

    Здесь на конкретном примере мы покажем, как можно использовать функцию уведомления об ошибках для мониторинга общих дисков. Этот пример основан на нашей аппаратной конфигурации. Вы можете легко изменить этот пример для работы с вашей дисковой подсистемой.

    Наши общие диски находятся в дисковой подсистеме ESS 2105-800 с подключением FC. Мы используем драйвер SDD, группы томов располагаются на дисковых устройствах vpath. Наша цель состоит в осуществлении мониторинга устройств vpath. При отказе ссылки vpath (hdiskX) требуется отправить уведомление системному администратору. При отказе дискового устройства vpath (vpathX) требуется выполнить перехват HACMP.

    В нашем примере у нас есть общая группа томов под названием db2vg. Она расположена на устройстве vpath1, имеющем два базовых пути: hdisk3 и hdisk11 (один LUN, через два разных HBA).

    Выбор метки ошибки

    Сначала посмотрим, что произойдет, если на несколько минут отключить кабели Fibre Channel из адаптеров. Конечно же, ввод-вывод останавливается и драйвер SDD регистрирует ошибки в журнале ошибок AIX.

    Теперь посмотрим на содержимое журнала ошибок (командой errpt); ( пример 12.4 ).

    Важно! Не рекомендуется выполнять этот тест преднамеренно, особенно при работе приложения с реальными данными. Несмотря на то что HACMP и SDD способны справиться с таким отказом, необходимо, чтобы и приложение тоже было способно справиться с отказом.
    #errpt
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    D7B7FF7E	0624164705 I 0 SYSJ2	USER DATA I/O ERROR
    07B7FF7E	0624164705 1 0 SYSJ2	USER DATA I/O ERROR
    613E5F38	0624164705 P H LVDD	I/O ERROR DETECTED BY LVM
    F4D25312	0624164705 P H vpathl	UNABLE TO COMMUNICATE WITH DEVICE
    A7212C7B	0624164705 P H hdiskll	DEVICE ACCESS PROBLEM
    A7212C7B	0624164705 P H hdisk3	DEVICE ACCESS PROBLEM
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    B8113DD1	0624164705 T H fcsO	LINK ERROR
    AFA89905	0624163505 I 0 grpsvcs	Group Services daemon started

    Существует два типа записей в журнале ошибок (см. Пример 12.4 ):

  • vpath1: unable to communicate with device (отсутствует связь с устройством). Эта ошибка возникает при отказе всех путей, принадлежащих к определенному устройству vpath. На устройстве vpath также происходит отказ, вследствие чего группа томов становится недоступной. Эта ошибка очень серьезно влияет на кластер, поэтому требуется, чтобы в этом случае произошло перемещение при сбое.
  • hdisk11 и hdisk13: device access problem (проблема с доступом к устройству): Ошибка возникает при отказе пути для связи с устройством vpath. Устройство vpath все еще доступно, однако отказ влияет на производительность и доступность. В этом случае адекватной реакцией является уведомление системного администратора.
  • Все эти ошибки произошли по одному разу и указывали на отказавшее устройство. Другие родственные сообщения об ошибках возникали по нескольку раз и не указывали на действительную причину проблемы. Теперь давайте рассмотрим эти записи журнала ошибок подробно. Запись см. в VPATH_OUT_SERVICE примере 12.5 .

    ferrpt -a|more
    LABEL:       VPATH_0UT_5ERVICE
    IDENTIFIER:    F4D25312 
    Date/Time:	Fr1 Jun 24 16:47:29 CDT
    Sequence Number:	222
    Machine Id:	0OO197BA4C00
    Node Id:	p650n02
    Class:	H
    Type:	PERM
    Resource Name:	vpathl
    Resource Class:	disk
    Resource Type:	vpath
    Location:
    Description
    UNABLE TO COMMUNICATE WITH DEVICE
    Probable Causes
    DISK
    SCSI ADAPTER
    SCSI CABLE
    Failure causes
    DISK
    SCSI ADAPTER
    CABLE LOOSE OR DEFECTIVE
    Recommended Actions
    PERFORM PROBLEM DETERMINATION ON SCSI TARGET 
    DEVICE PERFORM PROBLEM DETERMINATION ON HOST 
    SCSI ADAPTER REPLACE SCSI CABLE
    Detail Data
    SENSE DATA
    02IF 4664 OOOO 0000 0029 0001 0000 0004 
    0000 0000 0000 0000 0000 0001

    Запись VPATH_DEVICE_OFFLIN см. в журнале ошибок в примере 12.6 .

    #errpt -a|more
    LABEL:	VPATH_DEVICE_OFFLIN
    IDENTIFIER:	A7212C7B
    Date/Time:	Fri Jun 24 16:47:29 CDT
    Sequence Number: 221
    Machine Id:	0GO19/BA4CO0
    Node Id:	p650n02
    Class:	H
    Type:	PERM
    Resource Name:	hdiskll

    Из выходных данных команды errpt -a мы можем получить всю требуемую информацию (в нашем примере они выделены полужирным шрифтом) для конфигурирования уведомления об ошибках HACMP.

    Определение объектов уведомления об ошибках

    Установите в SMIT уведомления об ошибках – отказах vpath – на всех узлах кластера. Мы используем значения команды errpt -a, представленные в примере 12.5 .

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите метод уведомления со следующими значениями (рис. 12.6):
  • Notification Object Name (Имя объекта уведомления): vpath_failed.
  • Persist across system restart? (Сохранять после перезапуска системы?): Yes.
  • Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления): 0 (root) подойдет.
  • Select Error Class (Выбор класса ошибки): Hardware (см. "Class: H").
  • Select Error Type (Выбор типа ошибки): Permanent (см. "Тип: PERM").
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?): None.
  • Select Error Label (Выбор метки ошибки): VPATH_OUT_OF_SERVICE.
  • Resource Name (Имя ресурса): All. Требуется установить уведомления об ошибках для всех устройств vpath.
  • Resource Class (Класс ресурса): disk (см. "Resource Class: disk").
  • Resource Type (Тип ресурса): vpath (см. "Resource Type: vpath").(рис 12.6) Конфигурирование уведомления об ошибках для ошибок vpath
  • Notify Method (Метод уведомления): /usr/es/sbin/cluster/diag/cl_failover $6 $9. Этот скрипт предоставляется HACMP и запускает событие-ошибку HACMP errnotify, что осуществляет перемещение при сбое. Аргумент $6 представляет имя устройства, $9 представляет метку ошибки.
  • Установите через SMIT уведомление об ошибках для ошибок связи с vpath на всех узлах.

    Мы используем значения из команды errpt -a, представленные в примере 12.6.

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите метод уведомления со следующими значениями (рис. 12.6):
  • Notification Object Name (Имя объекта уведомления): path_offline.
  • Persist across system restart? (Сохранять после перезапуска системы?): Yes.
  • Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления): 0 (root) подойдет.
  • Select Error Class (Выбор класса ошибки): Hardware (см. "Class: H").
  • Select Error Type (Выбор типа ошибки): Permanent (см. "Тип: PERM").
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?): None.
  • Select Error Label (Выбор метки ошибки): VPATH_DEVICE_OFFLIN.
  • Resource Name (Имя ресурса): All. Требуется установить уведомления об ошибках для всех устройств vpath.
  • Resource Class (Класс ресурса): disk (см. "Resource Class: disk").
  • Resource Type (Тип ресурса): 2105 (см. "Resource Type: 2105").
  • Notify Method (Метод уведомления): /usr/ha/notify_root $6 $9. Исходный текст скрипта /usr/ha/notify_root представлен в примере 12.7 . Мы передаем аргументы $6 и $9: имя устройства и метку ошибки. Скрипт отправляет сообщение электронной почты пользователю root, содержащее сведения о возникшей ошибке.

    #!/bin/ksh
    #	Processing the arguments
    #	device name DEVICE-$1
    #	Error log label
    ERRLABEL=$2
    mail -s "Vpath conmunl cation error" root < <EOF
    The SDEVICE device encountered an SERRLABEL error. 
     The disk subsystem performance and availability is
     degraded. Perform problem determination!
    EOF
    exit 0

    Тестирование уведомления об ошибках

    Существует два способа тестирования объекта уведомления об ошибках:

  • Поочередное отключение кабелей FC от адаптеров HBA. Это в действительности позволяет протестировать решение; если все настроено правильно, HACMP инициирует перемещение при сбое.
  • Имитация записей в журнале ошибок:
  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Emulate Error Log Entry (Эмуляция записи в журнал ошибок).
  • Выберите метку ошибки VPATH_OUT_OF_SERVICE или VPATH_DEVICE_OFFLIN из выпадающего списка.
  • SMIT выводит метку ошибки, имя объекта уведомления и метод уведомления. Нажмите Enter для подтверждения эмуляции записи в журнал ошибок (рис. 12.7).
  • (рис 12.7) Эмуляция записи VPATH_OUT_SERVICE журнала ошибок

    Теперь HACMP отправляет запрошенную запись журнала ошибок демону журналов ошибок AIX и запускает метод уведомления. Если все настроено правильно, HACMP инициирует перемещение при сбое. Сведения о происходящих действиях записываются в файл /tmp/hacmp.out.

    Страницы:

    Написание скриптов для настраиваемых событий

    Настраиваемые события HACMP и средство уведомления об ошибках требуют написания скриптов.

    Необходимо учитывать следующее:

  • нужно протестировать все возможные входные параметры;
  • надо протестировать условные переходы, т. е. все переходы if и case ;
  • необходимо выполнить обработку кодов завершения и возвращаемых значений для всех внешних команд;
  • следует обеспечить правильное возвращаемое значение: 0 для успешного выполнения, любое другое число для неуспешного выполнения;
  • выполнение скрипта должно занимать разумное количество времени;
  • необходимо протестировать максимально возможное количество сценариев;
  • при отказе скрипта происходит отказ кластера;
  • программа восстановления должна быть способна выполнить восстановление после отказа события, в противном случае произойдет отказ кластера;
  • нужно сохранять свои скрипты в отдельном каталоге, например в каталоге /usr/ha.
  • Важно! Кластер не будет продолжать обработку событий, пока не завершится выполнение настраиваемых скриптов пред- и постобработки событий.

    Команды пред- и постобработки событий HACMP

    Конфигурация может содержать специальные аппаратные и программные компоненты, для которых HACMP не сможет осуществлять управление по умолчанию. В таких случаях можно добавлять собственные скрипты пред- и постобработки событий. Типичным применением является управление удаленным копированием с диска на диск на подсистемах хранения сторонних производителей.

    Для всех предопределенных событий HACMP можно определить скрипт предобработки, скрипт постобработки, метод уведомления и команду восстановления:

  • Скрипт предобработки событий. Выполняется перед выполнением события HACMP.
  • Скрипт постобработки событий. Выполняется после выполнения события HACMP.
  • Метод уведомления. Выполняется до и после события HACMP. Он отправляет системному администратору сообщение о начале или завершении события.
  • Команда восстановления. Выполняется только при отказе события HACMP.
  • При успешном выполнении метода восстановления событие также будет считаться успешным, независимо от результата скрипта обработки событияЗдесь ошибка: при успешном выполнении команды восстановления основной скрипт события запускается повторно. .
  • HACMP передает несколько аргументов в скрипты событий, которые вы можете использовать в своей программе. Табл. 12.1 содержит аргументы скриптов преди постобработки событий.

    Аргументы скриптов пред- и постобработки событий
    Скрипт Аргументы
    Предобработки события Имя события, завершающие аргументы
    Постобработки события Имя события, код завершения события, завершающие аргументы
    Метод уведомления Имя события, ключевое слово: start или complete; код завершения (для ключевого слова complete), завершающие аргументы
    Команда восстановления Имя события, завершающие аргументы

    Завершающие аргументы. Аргументы предопределенного скрипта обработки события 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

    Как видим, событие имеет следующие аргументы:

  • nodename – имя узла;
  • network – имя сети;
  • ip_address1 – новый доступный адрес;
  • ip_address2 – отказавший адрес.
  • Те же завершающие аргументы передаются в пользовательские скрипты преди постобработки событий.

    Внимание! Не изменяйте встроенные файлы событий: это не поддерживается и небезопасно. Всегда используйте скрипты пред- и постобработки событий.

    Выбор события

    По умолчанию HACMP обрабатывает группы ресурсов параллельно, что уменьшает количество событий кластера. Некоторые события выполняются только один раз, тогда как другие вообще не выполняются.

    Некоторые события выполняются, только если для группы ресурсов установлен последовательный режим обработки. Мы рекомендуем выполнить несколько тестов запуска/остановки кластера и перемещения при сбое и просмотреть файл /tmp/ hacmp.out. Это даст вам представление о конфигурации/сценарии, в которых выполняется событие, которое вы собираетесь изменить.

    Установка скриптов пред- и постобработки

    Мы покажем, как установить скрипт пред- и постобработки событий, на примере. У нас имеется дисковая подсистема стороннего производителя, которая требует дополнительного конфигурирования, прежде чем мы сможем активизировать группу томов. Нам требуется выполнить скрипт предобработки события get_disk_vg_fs. Также нужно отправить уведомление системному администратору при запуске или завершении события.

    Замечание. HACMP поддерживает конфигурирование скриптов пред-/постобработки событий в подключенном состоянии.
  • Напишите и тщательно протестируйте скрипт обработки события. Скопируйте файлы на все узлы с использованием одинакового пути и имени. Рекомендуется также поместить созданные файлы под контроль наборов файлов 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
    Этот скрипт выполняет проверку аргументов события, после чего вызывает программу конфигурирования дисковой подсистемы стороннего производителя.
    #!/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
    Этот образец программы уведомления отправляет сообщение электронной почты пользователю root с кодом завершения события 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(рис 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 для вывода списка уже определенных настраиваемых событий кластера.(рис 12.3) Выбор изменяемого события(рис 12.2) Изменение предопределенного события кластера
  • Recovery Command (Команда восстановления). (Необязательно). Полное имя (включая путь) скрипта восстановления.
  • Recovery Counter (Счетчик восстановления). Количество попыток выполнения команды восстановления. По умолчанию установлено значение 0. Если установлено значение больше нуля, то при успешном выполнении команды восстановления событие запускается повторно.
  • Выполните верификацию и синхронизацию кластера.
  • Замечание. При настройке автоматического обновления набора файлов HACMP_Files автоматически выполняется распространение настраиваемых файлов событий по узлам кластера. Дополнительные сведения о наборах файлов см. в разделе 8.2, "Наборы файлов".

    Уведомление об ошибках

    Средство уведомления об ошибках в HACMP является отличным инструментом мониторинга приложений и устройств, поддерживающим и использующим журналы ошибок AIX. При возникновении ошибки в приложении или устройстве, выполняется отправка сообщения в демон ведения журнала ошибок (error logger daemon, errdemon) с соответствующей информацией: датой, именем устройства или приложения, типом ошибки, описанием ошибки и прочей отладочной информацией. Демон errdemon записывает эти данные в файл журнала ошибок. Если уведомление об ошибках в HACMP настроено на этот тип ошибок, errdemon выполняет определенный пользователем метод уведомления/восстановления.

    Автоматическое уведомление об ошибках

    HACMP может сконфигурировать уведомление об ошибках и действие восстановления для некоторых типов ресурсов и ошибок:

  • диски Rootvg;
  • все диски, определенные в группе ресурсов HACMP;
  • SCSI-адаптеры, используемые ресурсами HACMP или rootvg;
  • адаптеры Fibre Channel, используемые ресурсами HACMP;
  • адаптер SP Switch.
  • Для серьезных, необратимых ошибок настраивается инициирование перехвата с использованием команды /usr/es/sbin/cluster/diag/cl_failover. При некритических ошибках /usr/es/sbin/cluster/diag/cl_logerror отправляет сообщение электронной почты пользователю root и записывает ошибку в файл /tmp/hacmp.out.

    Рассмотрение мониторинга дисков

    HACMP осуществляет мониторинг только для "традиционных" автономных дисков, например для встроенных SCSI-дисков или SSA-хранилищ. При обнаружении ошибок на дисках этого типа используются стандартные метки журнала ошибок AIX, такие,как DISK_ERR1 или SCSI_ERR3. Кроме того, HACMP может осуществлять мониторинг групп томов с полным зеркальным отображением, независимо от типа диска. В этом случае при обнаружении потери кворума (запись LVM_SA_QUORCLOSE в журнале ошибок) HACMP может инициировать перемещение.

    ESS, FAStT, DS4000 Series и другие современные дисковые подсистемы имеют встроенные средства обеспечения высокой доступности, так что они содержат встроенные механизмы восстановления после ошибок, например аппаратные функции RAID и multipath-подключения. Так как они имеют собственные драйверы устройств, при возникновении аппаратных ошибок они используют другие метки журнала ошибок. В разделе "Мониторинг общих дисков с уведомлением об ошибках HACMP", представлен пример мониторинга такой дисковой подсистемы.

    Настройка автоматического уведомления об ошибках

    Внимание. Нельзя сконфигурировать автоматическое уведомление об ошибках при работающем кластере.
  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите Add Error Notify Methods for Cluster Resources (Добавить методы уведомления об ошибках для ресурсов кластера).
  • HACMP добавляет автоматическое уведомление об ошибках на всех узлах.

    Внимание. Необходимо повторно добавлять автоматическое уведомление об ошибках при каждой верификации и синхронизации кластера.

    Вывод методов автоматического уведомления об ошибках

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите List Error Notify Methods for Cluster Resources (Вывести методы уведомления об ошибках для ресурсов кластера).
  • На рис. 12.4 представлен образец вывода методов автоматического уведомления об ошибках.

    (рис 12.4) Список методов автоматического уведомления об ошибках

    Удаление методов автоматического уведомления об ошибках

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Configure Automatic Error Notification (Конфигурирование автоматического уведомления об ошибках).
  • Выберите Remove Error Notify Methods for Cluster Resources (Удалить методы уведомления об ошибках для ресурсов кластера).
  • Выберите Remove Error Notify Methods for Cluster Resources (Удалить методы уведомления об ошибках для ресурсов кластера).
  • Использование уведомления об ошибках

    Можно вручную добавить объекты уведомления об ошибках для всех возможных типов ресурсов и ошибок. При создании объекта уведомления определяется набор правил или критериев типа ошибки, для которого следует осуществлять мониторинг. Эти правила могут включать метку для журнала ошибок, имя ресурса и т. д. При возникновении ошибки errlogger сопоставляет критерии, заданные в ODM-классе уведомления об ошибках, и в случае соответствия errdemon выполняет требуемый метод уведомления.

    Добавление метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите объект уведомления:
  • Notification Object Name (Имя объекта уведомления). Заданное пользователем имя, идентифицирующее объект уведомления об ошибках.
  • Persist across system restart? (Сохранять после перезапуска системы?). Yes – уведомление об ошибках будет использоваться постоянно; No – уведомление об ошибках будет использоваться только до следующей перезагрузки. Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления). Уведомление об ошибках отправляется от имени выбранного идентификатора процесса. По умолчанию применяется 0 (root)1; мы рекомендуем оставить здесь 0. При использовании ненулевого кода процесса следует установить для параметра Persist across system restart? (Сохранять после перезапуска системы?) значение No.
  • Select Error Class (Выбор класса ошибки). None – класс ошибок для сопоставления отсутствует; All – выполнять сопоставление для всех классов ошибок, Hardware – аппаратные ошибки, Software – программные ошибки, Errlogger – уведомления и сообщения оператора из программы errlogger.
  • Select Error Type (Выбор типа ошибки). None – тип ошибок для сопоставления отсутствует, All – выполнять сопоставление для всех типов ошибок, PEND– предстоящая потеря доступности, PERF – снижение производительности, PERM – постоянные ошибки, TEMP – временные ошибки, UNKN – неизвестный тип ошибки.
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?). Это поле предназначено для использования агентами оповещения приложений управления системами. None – игнорировать этот параметр, All – оповещение для всех ошибок, TRUE – сопоставлять ошибки с возможностью оповещения, FALSE – сопоставлять ошибки без возможности оповещения. Если у вас нет приложения удаленного управления, оставьте в этом поле значение None.
  • Select Error Label (Выбор метки ошибки). Нажмите F4, чтобы выбрать метку ошибки. Краткое описание меток ошибок см. в файле /usr/include/sys/errids.h. Resource Name (Имя ресурса). Имя отказавшего ресурса. Для класса аппаратных ошибок представляет имя устройства. Для класса программных ошибок представляет имя отказавшего исполняемого файла. Выберите All для сопоставления всех типов ресурсов.
  • Resource Class (Класс ресурса). Для класса аппаратного ресурса представляет класс устройства. Неприменимо к программным ошибкам. Выберите All для сопоставления всех классов ресурсов.
  • Resource Type (Тип ресурса). Тип устройства, под которым ресурс известен в объекте устройств. Применимо только к аппаратным ошибкам. Выберите All для сопоставления всех классов ресурсов.
  • Notify Method (Метод уведомления). Полное имя (включая путь) программы для запуска при регистрации ошибки, соответствующей критериям, определенным выше. В исполняемый файл можно передать следующие переменные:
    $1 – порядковый номер ошибки в журнале;
    $2 – идентификатор ошибки;
    $3 – класс ошибки;
    $4 – тип ошибки;
    $5 – флаг оповещения;
    $6 – имя ресурса отказавшего устройства;
    $7 – тип ресурса отказавшего устройства;
    $8 – класс ресурса отказавшего устройства;
    $9 – метка для регистрации в журнале ошибок.
    (рис 12.5) Добавление объекта уведомления об ошибках
  • Нажмите Enter для создания объекта уведомления об ошибках.
  • На рис. 12.5 показано, как добавить метод уведомления через SMIT.

    Изменение/вывод метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Change/Show a Notify Method (Изменение/вывод метода уведомления).
  • Выберите изменяемый метод уведомления из выпадающего списка.
  • Измените объект уведомления. Описание полей см. в разделе "Добавление метода уведомления".
  • Удаление метода уведомления

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Remove a Notify Method (Удаление метода уведомления).
  • Выберите удаляемый метод уведомления из выпадающего списка.
  • Нажмите Enter для удаления.
  • Тестирование метода уведомления

    Вы можете легко протестировать свои объекты уведомления. HACMP может эмулировать запись в журнале ошибок с использованием заданной меткой ошибки. Метка ошибки выводится в журнале ошибок, и метод уведомления запускается демоном errdemon.

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Emulate Error Log Entry (Эмуляция записи в журнал ошибок).
  • Выберите метку ошибки или метод уведомления из выпадающего списка. Здесь выводятся только те методы уведомления, для которых определены метки ошибок.
  • SMIT выводит метку ошибки, имя объекта уведомления и метод уведомления. Нажмите Enter для подтверждения эмуляции записи в журнал ошибок.
  • Мониторинг общих дисков с использование функции уведомления об ошибках HACMP

    Здесь на конкретном примере мы покажем, как можно использовать функцию уведомления об ошибках для мониторинга общих дисков. Этот пример основан на нашей аппаратной конфигурации. Вы можете легко изменить этот пример для работы с вашей дисковой подсистемой.

    Наши общие диски находятся в дисковой подсистеме ESS 2105-800 с подключением FC. Мы используем драйвер SDD, группы томов располагаются на дисковых устройствах vpath. Наша цель состоит в осуществлении мониторинга устройств vpath. При отказе ссылки vpath (hdiskX) требуется отправить уведомление системному администратору. При отказе дискового устройства vpath (vpathX) требуется выполнить перехват HACMP.

    В нашем примере у нас есть общая группа томов под названием db2vg. Она расположена на устройстве vpath1, имеющем два базовых пути: hdisk3 и hdisk11 (один LUN, через два разных HBA).

    Выбор метки ошибки

    Сначала посмотрим, что произойдет, если на несколько минут отключить кабели Fibre Channel из адаптеров. Конечно же, ввод-вывод останавливается и драйвер SDD регистрирует ошибки в журнале ошибок AIX.

    Теперь посмотрим на содержимое журнала ошибок (командой errpt); ( пример 12.4 ).

    Важно! Не рекомендуется выполнять этот тест преднамеренно, особенно при работе приложения с реальными данными. Несмотря на то что HACMP и SDD способны справиться с таким отказом, необходимо, чтобы и приложение тоже было способно справиться с отказом.
    #errpt
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    D7B7FF7E	0624164705 I 0 SYSJ2	USER DATA I/O ERROR
    07B7FF7E	0624164705 1 0 SYSJ2	USER DATA I/O ERROR
    613E5F38	0624164705 P H LVDD	I/O ERROR DETECTED BY LVM
    F4D25312	0624164705 P H vpathl	UNABLE TO COMMUNICATE WITH DEVICE
    A7212C7B	0624164705 P H hdiskll	DEVICE ACCESS PROBLEM
    A7212C7B	0624164705 P H hdisk3	DEVICE ACCESS PROBLEM
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    3074FEB7	0624164705 T H fscsiO	ADAPTER ERROR
    B8113DD1	0624164705 T H fcsO	LINK ERROR
    AFA89905	0624163505 I 0 grpsvcs	Group Services daemon started

    Существует два типа записей в журнале ошибок (см. Пример 12.4 ):

  • vpath1: unable to communicate with device (отсутствует связь с устройством). Эта ошибка возникает при отказе всех путей, принадлежащих к определенному устройству vpath. На устройстве vpath также происходит отказ, вследствие чего группа томов становится недоступной. Эта ошибка очень серьезно влияет на кластер, поэтому требуется, чтобы в этом случае произошло перемещение при сбое.
  • hdisk11 и hdisk13: device access problem (проблема с доступом к устройству): Ошибка возникает при отказе пути для связи с устройством vpath. Устройство vpath все еще доступно, однако отказ влияет на производительность и доступность. В этом случае адекватной реакцией является уведомление системного администратора.
  • Все эти ошибки произошли по одному разу и указывали на отказавшее устройство. Другие родственные сообщения об ошибках возникали по нескольку раз и не указывали на действительную причину проблемы. Теперь давайте рассмотрим эти записи журнала ошибок подробно. Запись см. в VPATH_OUT_SERVICE примере 12.5 .

    ferrpt -a|more
    LABEL:       VPATH_0UT_5ERVICE
    IDENTIFIER:    F4D25312 
    Date/Time:	Fr1 Jun 24 16:47:29 CDT
    Sequence Number:	222
    Machine Id:	0OO197BA4C00
    Node Id:	p650n02
    Class:	H
    Type:	PERM
    Resource Name:	vpathl
    Resource Class:	disk
    Resource Type:	vpath
    Location:
    Description
    UNABLE TO COMMUNICATE WITH DEVICE
    Probable Causes
    DISK
    SCSI ADAPTER
    SCSI CABLE
    Failure causes
    DISK
    SCSI ADAPTER
    CABLE LOOSE OR DEFECTIVE
    Recommended Actions
    PERFORM PROBLEM DETERMINATION ON SCSI TARGET 
    DEVICE PERFORM PROBLEM DETERMINATION ON HOST 
    SCSI ADAPTER REPLACE SCSI CABLE
    Detail Data
    SENSE DATA
    02IF 4664 OOOO 0000 0029 0001 0000 0004 
    0000 0000 0000 0000 0000 0001

    Запись VPATH_DEVICE_OFFLIN см. в журнале ошибок в примере 12.6 .

    #errpt -a|more
    LABEL:	VPATH_DEVICE_OFFLIN
    IDENTIFIER:	A7212C7B
    Date/Time:	Fri Jun 24 16:47:29 CDT
    Sequence Number: 221
    Machine Id:	0GO19/BA4CO0
    Node Id:	p650n02
    Class:	H
    Type:	PERM
    Resource Name:	hdiskll

    Из выходных данных команды errpt -a мы можем получить всю требуемую информацию (в нашем примере они выделены полужирным шрифтом) для конфигурирования уведомления об ошибках HACMP.

    Определение объектов уведомления об ошибках

    Установите в SMIT уведомления об ошибках – отказах vpath – на всех узлах кластера. Мы используем значения команды errpt -a, представленные в примере 12.5 .

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите метод уведомления со следующими значениями (рис. 12.6):
  • Notification Object Name (Имя объекта уведомления): vpath_failed.
  • Persist across system restart? (Сохранять после перезапуска системы?): Yes.
  • Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления): 0 (root) подойдет.
  • Select Error Class (Выбор класса ошибки): Hardware (см. "Class: H").
  • Select Error Type (Выбор типа ошибки): Permanent (см. "Тип: PERM").
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?): None.
  • Select Error Label (Выбор метки ошибки): VPATH_OUT_OF_SERVICE.
  • Resource Name (Имя ресурса): All. Требуется установить уведомления об ошибках для всех устройств vpath.
  • Resource Class (Класс ресурса): disk (см. "Resource Class: disk").
  • Resource Type (Тип ресурса): vpath (см. "Resource Type: vpath").(рис 12.6) Конфигурирование уведомления об ошибках для ошибок vpath
  • Notify Method (Метод уведомления): /usr/es/sbin/cluster/diag/cl_failover $6 $9. Этот скрипт предоставляется HACMP и запускает событие-ошибку HACMP errnotify, что осуществляет перемещение при сбое. Аргумент $6 представляет имя устройства, $9 представляет метку ошибки.
  • Установите через SMIT уведомление об ошибках для ошибок связи с vpath на всех узлах.

    Мы используем значения из команды errpt -a, представленные в примере 12.6.

  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Add a Notify Method (Добавить метод уведомления).
  • Определите метод уведомления со следующими значениями (рис. 12.6):
  • Notification Object Name (Имя объекта уведомления): path_offline.
  • Persist across system restart? (Сохранять после перезапуска системы?): Yes.
  • Process ID for use by Notify Method (Идентификатор процесса, используемый методом уведомления): 0 (root) подойдет.
  • Select Error Class (Выбор класса ошибки): Hardware (см. "Class: H").
  • Select Error Type (Выбор типа ошибки): Permanent (см. "Тип: PERM").
  • Match Alertable errors? (Сопоставлять ошибки с возможностью оповещения?): None.
  • Select Error Label (Выбор метки ошибки): VPATH_DEVICE_OFFLIN.
  • Resource Name (Имя ресурса): All. Требуется установить уведомления об ошибках для всех устройств vpath.
  • Resource Class (Класс ресурса): disk (см. "Resource Class: disk").
  • Resource Type (Тип ресурса): 2105 (см. "Resource Type: 2105").
  • Notify Method (Метод уведомления): /usr/ha/notify_root $6 $9. Исходный текст скрипта /usr/ha/notify_root представлен в примере 12.7 . Мы передаем аргументы $6 и $9: имя устройства и метку ошибки. Скрипт отправляет сообщение электронной почты пользователю root, содержащее сведения о возникшей ошибке.

    #!/bin/ksh
    #	Processing the arguments
    #	device name DEVICE-$1
    #	Error log label
    ERRLABEL=$2
    mail -s "Vpath conmunl cation error" root < <EOF
    The SDEVICE device encountered an SERRLABEL error. 
     The disk subsystem performance and availability is
     degraded. Perform problem determination!
    EOF
    exit 0

    Тестирование уведомления об ошибках

    Существует два способа тестирования объекта уведомления об ошибках:

  • Поочередное отключение кабелей FC от адаптеров HBA. Это в действительности позволяет протестировать решение; если все настроено правильно, HACMP инициирует перемещение при сбое.
  • Имитация записей в журнале ошибок:
  • Запустите smit hacmp.
  • Выберите Problem Determination Tools (Инструменты определения проблем).
  • Выберите HACMP Error Notification (Уведомления об ошибках HACMP).
  • Выберите Emulate Error Log Entry (Эмуляция записи в журнал ошибок).
  • Выберите метку ошибки VPATH_OUT_OF_SERVICE или VPATH_DEVICE_OFFLIN из выпадающего списка.
  • SMIT выводит метку ошибки, имя объекта уведомления и метод уведомления. Нажмите Enter для подтверждения эмуляции записи в журнал ошибок (рис. 12.7).
  • (рис 12.7) Эмуляция записи VPATH_OUT_SERVICE журнала ошибок

    Теперь HACMP отправляет запрошенную запись журнала ошибок демону журналов ошибок AIX и запускает метод уведомления. Если все настроено правильно, HACMP инициирует перемещение при сбое. Сведения о происходящих действиях записываются в файл /tmp/hacmp.out.

    Вернуться к учебному плану