Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Руководство пользователя

Содержание

Watchdog позволяет повысить отказоустойчивость сервера. Это устройство следит сервером и перезапускает его в случае отклонения от нормальной работы или в случае полного "зависания".

Частенько бывает, что с сервером случилось что-то непредвиденное: компьютер заклинило так, что никакие программы на нем уже не работают. Эту проблему можно решить, перезапустив его путем выключения / включения или нажатием кнопки reset. Но нужный для этого человек не всегда рядом. Это может случиться ночью, когда возле работающего сервера вообще нет людей.

Вот примеры некоторых ситуаций, которые могут потребовать перезапуска сервера:

  • Cбой или помеха по питанию. Вероятность такого сбоя можно резко снизить, запитав компьютер через хороший UPS. Но проблема устраняется не полностью.
  • Перегрев узлов компьютера в результате повышенной температуры окружающей среды, либо при выходе из строя охлаждающих элементов.
  • Сбой операционной системы в результате длительной работы, запуска нестабильного ПО и других, "софтовых" проблем. Понятно, если все настроено отлично, и Вы используйте стабильную ОС, такого быть не может. Но это в теории, а на практике почему-то очень даже может. Во-первых, настроено все, как правило, не идеально, и, во-вторых, ОС - не всегда и не все так стабильны, как хотелось бы.
  • Неудачная попытка удаленно перенастроить сервер. Например, длинная (возможно, неопределенно длинная) задержка во время перезагрузки.
  • некоторые компьютеры с блоком питания типа ATX, имеют тенденцию иногда не включаться с первого раза, особенно после сбоя питания. Watchdog тут вполне заменяет человека, нажимая кнопку power (для этого через rs232 кабель выведена пара проводов) и делая повторные попытки, если с первого раза компьютер не завелся.

Watchdog во многих подобных случаях решает проблему. Человек может придти утром, увидеть, что сервер перезапускался Watchdog-ом (Watchdog ведет протокол всех событий), и разобраться, в чем было дело.

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

Watchdog специально спроектирован так, чтобы перезапускать сервер как можно "мягче" (по возможности программным путем), прибегая к физическому прерыванию питания только в крайнем случае.

Что бы watchdog действительно приносил пользу, нужно учитывать массу нюансов. Поэтому Watchdog нашей компании - интеллектуальное устройство, работающее по гибкому и настраиваемому алгоритму.

Аппаратное устройство Watchdog существует в двух исполнениях.

Оба варианта работают с одним и тем же серверным ПО. Вы можете в любой момент заменить Watchdog Pro на Watchdog Lite или наоборот, и просто перезапустить серверное ПО.

За некоторыми исключениями (перечисленными ниже) они имеют одинаковую функциональность.

Watchdog Pro

  • Полноразмерный корпус (чуть больше обычного модема).
  • Встроенный блок питания (независимость от блока питания сервера в ряде случаев повышает надежность).
  • Способен перезапускать сервер не только нажатием reset, но и прерыванием электропитания (как ни странно, бывают случаи, когда кнопки reset недостаточно).
  • Имеет выключатели для отключения сервера и самого себя (при этом Watchdog работает как простая розетка).
  • В итоге - максимальная надежность и функциональность.

Watchdog Lite

  • Настолько мал, что просто одевается на разъем com порта.
  • Электропитание от блока питания сервера.
  • Может перезапускать сервер только нажатием reset.
  • Не имеет выключателей.
  • Имеет меньший объем энергонезависимой памяти для хранения логов событий.
  • Дешевле, чем Watchdog Pro.

Watchdog следит за работоспособностью сервера. Разумеется, это может быть и не сервер, а просто рабочий компьютер. Однако для краткости тут назовем его просто сервер.

Аппаратно-программный комплекс Watchdog состоит из аппаратного устройства Watchdog (в дальнейшем также называемым просто Watchdog) и серверного программного обеспечения (далее просто "серверное ПО"). Часть функциональности реализуется в Watchdog, часть - в серверном ПО.

Вот краткое описание того, как распределяются функции.

Аппаратное устройство - Watchdog

  • Наблюдает за сервером и перезапускает его тогда, когда watchdogd уже не может перезагрузить его программно.
  • Заранее настраивается на всевозможные ситуации. Настройки хранятся в энергонезависимой памяти и записываются туда серверным ПО. Которое в свою очередь читает их из конфигурационного файла.
  • Протоколирует (с указанием времени) все свои действия, а также важную информацию о происходящем, полученную от watchdogd, в энергонезависимую память.
  • Отслеживает время по внутренним часам (с отдельным питанием от батарейки). Время постоянно синхронизируется по серверу.
  • Имеет световую индикацию, позволяющую быстро понять, в каком состоянии сейчас находится устройство и сервер.

Серверное программное обеспечение

Главная компонента серверного ПО - watchdogd. Эта программа постоянно работает на сервере и общается с устройством через com порт. В Windows подобные программы называют сервисы или службы (service), в Unix-е - демонами (daemon). Собственно, это и есть серверная часть комплекса, остальные программы, входящие в поставку, - вспомогательные.

Основные функции серверного ПО:

  • Сообщает watchdog-у необходимую ему информацию о состоянии сервера.
  • Автоматически управляет watchdog-ом, посылая ему соответствующие команды.
  • При запуске получает у watchdog-а протокол событий из энергонезависимой памяти и записывает его в лог файл.
  • Позволяет человеку явно управлять как устройством, так и демоном. Как локально, так и удаленно (через telnet и ssh).
  • Позволяет протестировать watchdog вручную, посылая ему различные команды и отслеживая ответы.

Некоторые термины

Прошивка (firmware)

Это ПО, прошиваемое и работающее в аппаратуре watchdog-е. Именно эта компонента определяет поведение аппаратного устройства.

Live пакет

Серверное ПО (точней watchdogd) периодически посылает watchdog-у сигнал (см. опцию live_interval), что с ним все в порядке. Эта посылка называется Live пакет. Также Live пакет содержит серверное время для синхронизации часов устройства.

Здесь мы рассматриваем:
  • аппаратное устройство Watchdog Pro 1.5 с прошивкой версии 1.5
  • аппаратное устройство Watchdog Lite 1.0 с прошивкой версии 1.0
  • серверное ПО версии 2.1 (для Windows)
  • серверное ПО версии 1.4 (для Unix)

Серверное ПО версий 2.1 и 1.4 совместимо со всеми существующими на данный момент версиями аппаратных Watchdog устройств нашей компании (и Pro и Lite исполнения).

Версия 2.1 отличается от 1.4 в основном переработанной внутренней архитектурой, плюс незначительными улучшениями. В будущем эта версия будет работать и под Unix, пока же под Unix используется версия 1.4.

О версии прошивки Вам не надо беспокоиться, если только вы не собираете watchdog сами по нашей документации (все схемы выложены на сайте).

Рассмотрим некоторые типичные процессы, которые обычно происходят со связкой Watchdog - Сервер, и состояния, в которых они при этом находятся.

Включение устройства и загрузка прежде выключенного сервера

Новое устройство

Если watchdog был с чистой памятью (например, новый), или был заблокирован после правильного прошлого выключения сервера, то в этой ситуации он спокойно ждет загрузки сервера и контакта с watchdogd (который, разумеется, должен автоматически запуститься в процессе загрузки сервера). После чего и Watchdog, и серверное ПО на сервере переходят в нормальный дежурный режим работы.

Светоиндикация: сначала, когда Watchdog с чистой памятью, не проконтактировал с watchdogd, мигают оба светодиода одновременно.

Затем, после первого контакта с сервером, Watchdog переходит в нормальный, дежурный режим работы и начинает редко мигать зеленый.

Watchdog, уже контактировавший с серверным ПО

Если Watchdog был с неочищенной памятью (не только что из упаковки), и не был заблокирован ( см. описание wd_ctl ), то на загрузку сервера будет дано ограниченное время (опция first_wd_delay). После чего Watchdog попробует перезапустить сервер заново.

При первом (с момента запуска watchdogd) контакте с устройством, последнему посылаются параметры из конфигурационного файла и снимается блокировка. Если эти параметры отличаются от тех, что прошиты в энергонезависимой памяти, - они заменяются новыми. Таким образом, чтобы устройство получило новые параметры из измененного конфигурационного файла, достаточно перезапустить watchdogd, например, командой wd_ctl restart_daemon.

Светоиндикация: сначала, когда Watchdog не проконтактировал с watchdogd, светодиоды не горят вообще (Watchdog заблокирован после прошлого shutdown-а). После контакта с сервером зеленый светодиод начинает мигать часто, после Live пакета (периодичность задается опцией live_interval), - зеленый светодиод начинает мигать редко, показывая, что Watchdog находится в нормальном дежурном режиме.

Нормальный, дежурный режим работы

Светоиндикация: редко мигает зеленый светодиод. Watchdog и watchdogd находятся в дежурном режиме. При этом сервер периодически посылает для Watchdog подтверждение, что с ним все в порядке (Live пакет). Интервал задается опцией live_interval. Если Watchdog не получит такого подтверждения в течении заданного времени (опция normal_wd_delay), то он начнет пытаться перезапустить сервер аппаратно.

Необходимо, чтобы rs232 кабель соединяющий Watchdog и сервер, был надежно привинчен, потому что в случае потери контакта Watchdog расценит это как зависание сервера.

Аппаратный перезапуск сервера

Если Watchdog решил, что с сервером что-то не ладно, - он начинает перезапускать его аппаратно.

Для этого Watchdog Pro выключает электропитание сервера на 5 секунд (если не выключена опция break_power). Потом, после паузы, (задаваемой опцией button_delay, и если не выключена опция use_button) на секунду замыкает выведенные через rs232 дополнительные проводки. В типичном случае эти проводки припаивают параллельно кнопке power в ATX корпусе.

В результате получается, что Watchdog Pro выключает и включает сервер точно так же, как это сделал бы человек (отключить питание, подключить питание, нажать кнопку power).

Watchdog Lite же просто на секунду замыкает выведенные через rs232 дополнительные проводки. Которые припаиваются параллельно кнопке reset.

После включения сервера Watchdog ждет заданное время (опция reboot_timeout). После чего повторяет аппаратный перезапуск. И так заданное количество раз (опция repowers_for_dead). Когда количество попыток исчерпывается, сервер получает статус "dead", и дальнейшие попытки перезапуска делаются с интервалом, заданным опцией dead_wd_repower_pause (dead_wd_delay для версии ПО 1.4). Обычно задается достаточно большое число: по умолчанию 1800 (30 мин). Так как если сервер не поднялся с нескольких попыток, то этому явно что-то сильно мешает и нет смысла дальше повторять постоянные и частые попытки.

Каждая стадия процесса перезапуска сервера отображается определенной светоиндикацией.

Нормальная перезагрузка сервера

Можно сделать простой reboot, надо только убедиться что параметры в watchdogd.conf позволят (обычно так и есть) серверу успеть загрузиться. В противном случае сервер будет перезапущен в процессе загрузки, после чего уже нормально загрузится.

Есть более корректный способ перезагрузки. При использовании которого Watchdog знает, что сервер начал перезагрузку, и ждет сигнала, что он перезагрузился в течении заданного времени (опция reboot_timeout). Если сигнала в течении этого времени не поступает, он начинает пытаться поднять сервер аппаратным перезапуском.

За некоторое время до этого (опция low_time_warn) начинает часто мигать красный светодиод, показывая, что скоро произойдет перезапуск. Разумеется, вплоть до самого щелчка реле, у сервера есть шанс отменить эту болезненную процедуру, послав Live пакет.

При такой процедуре перезагрузки Вы подстрахованы от разных неприятностей, иногда возникающих во время перезагрузки, например, в Unix shutodown процесс иногда может длиться очень долго из-за различных сетевых таймаутов. Windows тоже на раз может основательно задуматься в процессе перезагрузки, бывает, пока reset не нажмешь. А тут Вас подстрахует Watchdog.

Реализация такой перезагрузки пока отличается для Windows / Linux, ниже описаны как это сделать для каждой платформы.

Windows

Лучше всего перезагружать сервер командой wd_ctl reboot или обычными средствами, дав предварительно команду wd_ctl reboot_notify.

Unix

В версии 1.4 для unix специальной команды, инициирующей ребут сервера нет. Но того же эффекта можно добиться, уменьшив паузу между проверками заданного порта и остановив сервис, который открывает этот порт. По истечении таймаута watchdogd произведет программный reboot, контролируемый аппаратным Watchdog-ом.

Shutdown (выключение) сервера

При правильном выключении сервера Watchdog блокируется и не будет предпринимать попыток оживить сервер, который был выключен специально.

Windows

Лучше всего делать shutdown сервера командой wd_ctl shutdown, (прописывается инсталлятором в меню). Либо обычными средствами, предварительно остановив сервис watchdogd или дав команду wd_ctl shutdown_daemon.

Unix

Сначала выполните команду wd_ctl shutdown , это остановит демон watchdogd и блокирует аппаратный Watchdog. Потом сделайте обычный shutdown.

Блокировка

Устройство может быть заблокировано. И это автоматически делается при нормальном выключении сервера или остановке watchdogd.

Заблокированное устройство никогда не прервет питание сервера. Состояние (заблокировано / разблокировано) запоминается в энергонезависимой памяти, поэтому выключение / включение питания ничего тут не меняет.

Блокировка снимается при запуске watchdogd.

Светоиндикация: оба светодиода погашены. В момент выключения питания заблокированный Watchdog на секунду зажигает оба светодиода. Это позволяет отличить состояние блокировки от, скажем, отсутствия питания.

Мертвая зона

Под "мертвой зоной" подразумевается такой период в процессе загрузки (хотя может и позже), когда сервер нельзя аппаратно перезапускать (от этого будет только хуже). Это ситуация, когда Watchdog бессилен, и лучшее, что он может сделать, - не делать ничего (вместо того, чтобы сделать еще хуже, задалбывая сервер постоянными перезапусками).

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

Можно использовать команды wd_ctl dzone_in и wd_ctl dzone_out, чтобы пометить начало и конец этого состояния. Под Unix их можно вписать в загрузочные скрипты. А вот куда вписать их под Windows, - пока неразрешенная загадка. Соответственно, как использовать данную возможность в Windows непонятно.

Оба варианта (Pro / Lite) включают:

Два светодиода

Красный и зеленый для индикации текущего состояния.

Энергонезависимая память

Устройство имеет память, содержимое которой сохраняется при выключении питания устройства (батарейка при этом тоже не используется). Эта память используется для сохранения настроек устройства. А также для записи протокола событий, до скачивания его сервером при запуске watchdogd.

Встроенные часы

Все события, записываемые в протокол событий, сопровождаются датой и временем. Чтобы отслеживать его, устройство имеет встроенные часы, питаемые от батарейки. Батарейки, уже вставленной в устройство, хватит на много лет. Но если понадобится, Вы можете заменить ее, открыв устройство.

Время синхронизируется по серверу, для этого демон, посылая Live пакет, сразу посылает и команду установки текущего времени.

Watchdog Pro

Устройство собрано в небольшом корпусе, напоминающем модем. Два компьютерных разъема на 220v, в один вводится 220v, с другого запитывается обслуживаемый сервер. Само устройство также питается от введенных 220v. Внутри устройства имеется предохранитель.

Подключается к rs232 порту сервера через специальный кабель (входит в комплект). Через этот же кабель к серверу также подводится провод для управления кнопкой power или reset.

Объем энергонезависимой памяти для логов в несколько раз больше чем, у Lite версии.

Выключатели

Черный выключатель - отключает питание сервера вместе с устройством. Именно так и надо выключать питание сервера.

Серый - отключает только сам watchdog, превращая его в простую розетку. Сервер работает. Внимание! watchdogd на сервере продолжает свою работу и может перезагрузить сервер программно (если программа была запущена при включенном устройстве), поэтому для полного отключения всего Watchdog комплекса остановите и watchdogd.

Управляющие реле

Для аппаратного запуска сервера в устройстве есть два реле. Главное реле прерывает питание сервера (220v) на 5 секунд. Второе замыкает на одну секунду пару проводов (выходящих из разъема rs232 кабеля, который втыкается в сервер). Их можно подсоединить к кнопке power, чтобы включить питание ATX корпуса сервера после прерывания (если он сам этого не умеет), либо к кнопке reset, чтобы перезапускать сервер не прерыванием питания, а кнопкой reset. Задержка между срабатыванием первого и второго реле задается опцией button_delay. Так же можно запретить срабатывание любого из реле (опции break_power и use_button).

Lite Watchdog

Устройство размещено в небольшом корпусе и непосредственно (без провода) подключается к разъему RS232 сервера.

Из корпуса устройства выходят два провода. Один, со специальным разветвителем, подключается внутри корпуса сервера к серверному блоку питания. Другой к кнопке reset сервера.

Не имеет выключателей.

Для аппаратного рестарта сервера в устройстве есть одно управляющее реле. Через провод, подсоединенный к кнопке reset сервера, Watchdog имитирует нажатие этой кнопки.

Световая индикация состояния устройства

Светодиоды показывают текущее состояние устройства. Каждый из них может мигать часто и редко. Вот описание всех комбинаций:

Часто мигают оба светодиода одновременно. - Нет настроек в памяти, настройки будут загружены при контакте с сервером (точнее с watchdogd).

Часто мигает зеленый. - С момента прерывания питания сервера или включения устройства, сервер еще не послал устройству Live пакет.

Редко мигает зеленый. - Нормальное состояние, с сервером все в порядке.

Часто мигает красный. - Сервер давно не посылал устройству сигнала, что с ним все в порядке, и осталось мало времени (опция low_time_warn) до момента, когда питание его будет прервано для аппаратного перезапуска.

В течении нескольких секунд не мигая горит один красный. - Питание сервера как раз сейчас выключено на несколько секунд для перезапуска. Еще это состояние легко опознается по щелчкам реле.

Оба погашены. - Устройство заблокировано, например, после нормального shutdown-а сервера.

Часто перемигиваются (загораются по очереди). - watchdogd пытается перезапустить сервер самостоятельно, либо происходит нормальная перезагрузка с использованием команд wd_ctl reboot или wd_ctl reboot_notify. Устройство заданное время (опция reboot_timeout) ждет от сервера сигнала, что он загрузился успешно (Live пакет), а потом перезапускает сервер прерыванием питания (если не дождался этого сигнала).

Версии ПО для Windows и Unix немного отличаются, как в силу отличия самих платформ, так и потому что версия для unix писалась раньше.

Все отличия явно перечислены, если платформа специально не оговаривается, значит написанное справедливо для обеих версий.

Серверное ПО состоит из документации и следующих программ:

watchdogd

Собственно серверная часть Watchdog комплекса.

Синтаксис запуска:

Unix:

watchdogd [-f конфиг_файл] [-b]

-h - выдает подсказку.

-f - задает явный путь к конфиг. файлу. По умолчанию '/etc/watchdog.conf'. Без конфиг. файла, явно или неявно заданного, программа не запустится.

-b - нужно задавать при первом с момента загрузки сервера запуске watchdogd (в скрипте загрузки). Посылает аппаратному watchdog уведомление, что сервер только что загрузился. Позволяет отличить загрузку сервера от просто перезапуска демонов.

-c - запуск в режиме обычного приложения. Т.е. не демоном в фоне.

Описание опций конфигурационного файла есть в самом файле в виде комментариев.

Пример конфигурационного файла

Windows:

watchdogd [-S | -s | -c | -h]

В Windows watchdogd обычно запускается как сервис, либо автоматически, либо из "Панели управления", и все описанные опции Вам вряд ли пригодятся.

-h - выдает подсказку.

-c - запуск watchdogd в режиме обычного приложения (не сервиса). Запускать watchdogd таким образом можно, например, во время правки конфиг. файла, тогда watchdogd выдает ошибки прямо на консоль.

-S - установка watchdogd в качестве сервиса. Аргумент - полный путь к программе. Это делается автоматически в процессе установки.

-s - удаление watchdogd из списка сервисов. Аргументов нет. Делается автоматически в процессе удаления серверного ПО посредством инсталлятора.

Настройка поведения серверного ПО и аппаратного Watchdog производится редактированием конфигурационного файла. В Unix он по умолчанию располагается в '/etc/watchdog.conf', а в Windows в директории, куда установлено серверное ПО.

При ошибке в конфиг. файле сервис выдает ошибку в eventlog, а если запущен с ключом '-c', то еще и на консоль.

Описание опций конфигурационного файла есть в самом файле в виде комментариев.

Пример конфигурационного файла

Примечания к работе watchdogd и конфигурационному файлу

Новое устройство не имеет в памяти настроек и находится в пассивном состоянии до первого контакта с сервером.

При запуске watchdogd пытается обнаружить устройство и получить его состояние. Если это не удается, он продолжает периодически (опция detect_interval) пытаться обнаружить устройство. Пока устройство не обнаружено, watchdogd находится в пассивном состоянии и ничего, кроме периодических попыток обнаружить устройство, не делает.

После обнаружения устройства, у него снимается блокировка (если оно было заблокировано, например, после выключения сервера) и обновляются параметры до соответствия заданным в конфигурационном файле.

Протокол событий

В момент запуска (или перезапуска) watchdogd выкачивает из аппаратного watchdog протокол всех событий с момента прошлого запуска и записывает их в отдельный лог файл (директория задается опцией log_path). Имя файла формируется из текущей даты и времени.

Лог файлы могут помочь разобраться с тем, что происходило с Вашим сервером.

Описание формата лог файла

Каждое событие занимает одну строку вида: дата время описание события.

Типы событий
  • up - сервер загрузился после прерывания питания.
  • repower - watchdog прервал питание сервера.
  • watchdog on - watchdog включен.
  • restart procedure - watchdogd начал процедуру перезапуска сервера.
  • watchdog locked - watchdog заблокирован.
  • watchdog locked - watchdog разблокирован.
  • normal shutdown - сервер начал плановый shutdown.
  • reset - watchdog перезапущен командой reset.
  • notify: boot - первый запуск демона (с ключом -b).
  • notify: self_check_failed - сервер не прошел тест-самопроверку на работоспособность.
  • notify: try_reboot1 - попытка перезагрузить сервер первого уровня (команда reboot1_cmd).
  • notify: try_reboot2 - попытка перезагрузить сервер второго уровня (команда reboot2_cmd).
  • notify: dead zone in - сервер вошел в "мертвую зону", watchdog будет заблокирован до выхода из нее по команде wd_ctl dzone_out.
  • notify: dead zone out - сервер вышел из "мертвой зоны". watchdog разблокируется.

wd_ctl - управляющая утилита

команды и ключи несколько отличаются в версии 2.1 для Windows и 1.4 для Unix. Поэтому ниже приведены отдельные описания для каждой версии ПО.

В будущих версиях ПО это расхождение будет устранено.

Windows (ПО v2.1)

Использовать так:

wd_ctl [ключи] команда,
где ключи:

-h - выдает краткий help.

-f - задать явно путь к конфиг. файлу. Из конфиг. файла утилита берет номер порта и secret_str для соединения с watchdogd.

-w - не завершать работу программы сразу, а ждать нажатия любой клавиши. Это полезно, когда команда запускается из графической среды.

-c - спросить подтверждение перед выполнением команды.

Команды

restart_daemon, shutdown_daemon, shutdown, reboot, reboot_notify, dzone_in, dzone_out, state.

restart_daemon

Перезапускает watchdogd. При этом перечитывается файл конфигурации, и из устройства выкачиваются логи.

shutdown_daemon

Остановка watchdogd с блокировкой устройства. Если выключить сервер, не заблокировав Watchdog, то он (если подсоединен к кнопке power) аккуратно включит только что выключенный Вами сервер.

shutdown

Делает то же, что и shutdown_daemon, и плюс к этому делает shutdown сервера. Поэтому эту команду стоит использовать для выключения сервера. Альтернатива - сначала дать wd_ctp shutdown_daemon, а потом сделать обычный shutdown.

Команда ОС для выполнения shutdown-а задается опцией shutdown_cmd. В Windows версии можно (и обычно, даже нужно) в качестве команды задать '<internal>', что приведет к shutdown-у сервера через системный API вызов.

reboot

Перезагрузка сервера с посылкой оповещения аппаратному Watchdog о том, что сервер пытается перезагрузиться. Watchdog при этом засекает время (опция reboot_timeout), и если сервер не смог загрузиться (запустить watchdogd), - начинает процедуру аппаратного перезапуска.

Команды ОС для выполнения перезагрузки задаются опциями reboot1_cmd и reboot2_cmd. В Windows версии можно (и обычно, нужно) в качестве команды задать '<internal>', что приведет к shutdown-у сервера через системный API вызов.

Сначала исполняется команда reboot1_cmd, потом в течении времени, заданного опцией reboot1_cmd_timeout, watchdogd ждет, что сервер перезагрузится. Если этого не происходит, он выполняет команду reboot2_cmd и дальше пассивно ждет. Пока не произойдет перезагрузка по команде reboot2_cmd, либо устройство не перезапустит сервер аппаратно (когда истечет время, заданное опцией reboot_timeout).

reboot_notify

Похоже на предыдущую команду, но не перезагружает сервер, а только оповещает аппаратный watchdog о начале перезагрузки. Сервер тогда должен быть перезагружен стандартными средствами.

dzone_in

Вход в "мертвую зону". Когда сервер в "мертвой зоне", его нельзя перезапускать: если его заклинит в этом месте, то лучше его так и оставить. Не пытаясь ничего с ним делать до прихода человека.

dzone_in и dzone_out позволяют отметить начало и конец мертвой зоны.

Пример "мертвой зоны": проверка диска в скрипте загрузки. Стоит пометить начало и конец проверки командами dzone_in и dzone_out.

dzone_out

Выход из "мертвой зоны".

state

Выводит состояние устройства. Вот расшифровка:

host_live - сервер уже посылал Live пакет с момента включения аппаратного Watchdog или перезапуска сервера. host_dead - сервер не удалось "поднять" после заданного количества прерываний питания. И теперь Watchdog делает попытки реже. low_time - осталось мало времени до прерывания питания (опция low_time_warn). locked - Watchdog заблокирован.

Unix (ПО v1.4)

Использовать так:

wd_ctl -h выдает краткий help wd_ctl ключи команды

где ключи:

-v : выдавать побольше дополнительной информации о происходящем -f : задать явно путь к конфигурационному файлу (по умолчанию /etc/watchdog.conf)

команды: restart_daemon, stop_daemon, shutdown, dzone_in, dzone_out, lock, unlock, state, reset

restart_daemon

Перезапускает демон watchdogd. При этом перечитывается файл конфигурации и из устройства выкачиваются последние логи.

stop_daemon

Остановить демон. Внимание! Устройство это расценивает как потерю связи с сервером и через какое-то время, в зависимости от настроек, попробует решить проблему прерыванием питания.

Обычно вам нужна не эта команда, а shutdown. - см. ниже.

shutdown

Блокировка устройства и остановка демона. Эту команду надо давать перед тем как сделать нормальным shutdown сервера, если вы не хотите, чтобы устройство его после этого "оживило". ;)

Это не вызывает shutdown сервера, его надо делать отдельно.

dzone_in

Вход в "мертвую зону". Когда сервер в "мертвой зоне", его нельзя перезапускать: если его заклинит в этом месте, то лучше его так и оставить. Не пытаясь ничего с ним делать до прихода человека.

dzone_in и dzone_out позволяют отметить начало и конец мертвой зоны.

Пример "мертвой зоны": проверка диска в скрипте загрузки. Стоит пометить начало и конец проверки командами dzone_in и dzone_out.

dzone_out

Выход из "мертвой зоны".

Пример "мертвой зоны": проверка диска в скрипте загрузки. Стоит пометить начало и конец проверки командами dzone_in и dzone_out.

dzone_out

Выход из "мертвой зоны"

lock

Блокировка устройства. В заблокированном состоянии устройство не прерывает питания сервера. Но продолжает реагировать на вcе команды.

В виде команды утилиты wd_ctl сделана на всякий случай. Обычно вполне достаточно команд dzone_in и dzone_out.

unlock

Снимает блокировку устройства. При этом устройство оказывается в состоянии как после включения. Полезна, если вы хотите разблокировать устройство немедленно, не дожидаясь пока это сделает команда dzone_out при очередной загрузке сервера.

state

Выводит состояние устройства.

Вот расшифровка: host_live - Сервер уже посылал Live пакет с момента включения аппаратного watchdog или перезапуска сервера. host_dead - Сервер не удалось "поднять" после заданного количества прерываний питания. low_time - Осталось мало времени до прерывания питания. locked - Watchdog заблокирован.
reset

Перезапуск устройства. То же самое, что выключить и включить его рубильником, плюс снимается блокировка, если она была. Полезно для удаленного перезапуска. С сервером при этом ничего не происходит, он только ненадолго теряет связь с устройством. Перезапуск занимает три секунды.

wd_tester

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

Эта утилита не нужна Вам в работе, но может понадобиться, например, при контакте с нашей службой тех.поддержки.

Специальные команды
/bin - перейти в бинарный режим. Выдается hex dump + текст (где это возможно). /text - перейти в текстовый режим. Все выдается в виде текста. /quit - выйти из программы.

Любой другой текст посылается устройству в качестве команды. Полученный ответ выдается на экран.

Некоторые полезные команды (регистр важен)
V - версия аппаратного устройства. v - версия прошивки (firmware). t - текущее время. Z - перезапуск устройства (как будто выключить и включить). E - стирание энергонезависимой памяти, занимает несколько минут (то же можно сделать и командой wd_ctl erase).
 

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками

Аппаратный watchdog своими руками