Статьи
Повышение отказоустойчивости сервера
 изнес многих компаний
связан с устойчивой работой серверов,
на которых работают критичные приложения. В таких компаниях простои
в работе сервера обходятся в конкретные деньги, и часто не маленькие.
Как бы тщательно не были настроены сервера, есть шанс, что что-то пойдет не
так, и сервер перестанет нормально работать. Чтобы от этого защититься, нужно,
чтобы кто-то дежурил у сервера. Хорошо настроенные сервера позволяют
управлять ими удаленно. Но в ряде ситуаций сервер не откликается и на
управляющие команды.
Если сервера настроены достаточно хорошо, то вероятность подобных сбоев
достаточно мала. Ну скажем, один на месяц. И держать дежурных, да еще круглосуточно, вряд ли оправданно.
Кроме того, сервер может стоять в таком месте, где постоянное дежурство вообще невозможно (например, на чердаке здания).
Тут на сцену и выходит устройство под названием WatchDog, что буквально
переводится как "сторожевая собака". Этот программно-аппаратный комплекс
следит за работой сервера, и, когда возникает необходимость, - вмешивается.
WatchDog делает то, что в большинстве случаев сделал бы дежурный: отслеживает
состояние сервера и, когда тот перестает нормально работать, пытается его
перезапустить. Сначала мягко и цивилизованно, программным путем. А если не
выходит, то грубо, путем прерывания подачи питания на несколько секунд,
и если нужно, нажатием кнопок "Power" и "Reset".
Причем чтобы все это было применимо к реальным условиям, WatchDog должен
учитывать массу нюансов. Есть много ситуаций, когда примитивный
WatchDog может сам стать проблемой. Например, постоянно перезапуская сервер,
который никак не загружается, в то время как должен быть какой-то (и,
разумеется, настраиваемый) предел для таких попыток.
Наше устройство учитывает все необходимые нюансы. Для того, чтобы это было
возможно, оно построено с использованием микроконтроллера (т.е. оно по сути
само представляет из себя компьютер, только более простой и надежный).
Именно поэтому само аппаратное устройство используется в комплекте с
программным обеспечением, работающим на сервере. И все это (и аппаратное
устройство, и программное обеспечение) гибко настраивается.
Данное устройcтво делает все, что только можно, для восстановления
работоспособности сервера без присутствия человека. Причем, когда до сервера
добирается человек, у него есть вся информация о том, что наблюдал и делал
WatchDog (для этого устройство сохраняет все данные в энергонезависимую
память).
Правильным подходом будет:
- Купить хорошие сервера.
- Хорошо настроить сервера.
- Нанять хорошего специалиста для их обслуживания.
- И подстраховать этого специалиста WatchDog-ом.
Если в каком-то из пунктов слабина, то WatchDog становится еще более
актуальным.
Зачем WatchDog-у быть таким сложным и дорогим?
 то можно понять,
ответив на некоторые вопросы, которые нам задавали покупатели.
****
А что будет, если с сервером что-то случилось, и во время перезагрузки,
устроенной WatchDog-ом, он снова повиснет. И будет делать так каждый раз,
в ответ на каждый перезапуск его WatchDog-ом.
Понятно, что это проблема такая, что решить ее может только человек,
но что будет с сервером после, например, двух суток перезагрузок через каждые 5 мин. Возможно, WatchDog сам станет проблемой, причем более серьезной, чем та, что он решал.
****
А что будет, если программа на сервере, сигнализирующая WatchDog-у,
работает, а все остальное, - нет. Ситуация-то обычная: сервер, который,
например, откликается на ping и, тем не менее, практически мертвый, - обычное дело. В таком случае WatchDog будет думать, что с сервером все в порядке.
Нельзя ли проверять как-то работоспособность сервера, а не просто судить
об этом по тому, откликается программа или нет.
****
А можно ли, придя на работу в понедельник, получить протокол действий
WatchDog-а. Например, я вижу по логам на сервере, что он был в дауне
несколько часов. Но я не знаю, почему. Могу я узнать, пытался ли WatchDog его запускать, и кто в конце концов его завел? В общем, хочется знать,
что делал WatchDog, пока меня не было. Разумеется, с указанием времени.
Да, и кстати, время будет правильным после временного отключения света?
****
А что будет, если серверная программа, взаимодействующая с WatchDog-ом,
вызовет какую-то динамическую библиотеку, а она не сможет подгрузиться?
Ведь не известно, что будет с сервером в такой момент.
****
А что будет, если сервер после перегрузки его WatchDog-ом на проверке диска,
выдаст сообщение, что есть серьезные ошибки и подайте ему админа человека.
WatchDog так и будет перезапускать его как идиот, добивая и без того сбойный диск?
****
А нельзя ли сделать, что после какого-то количества неуспешных перезапусков пауза между попытками перезапуска была больше? Это, возможно, снизит лишние перезапуски и не так задергает сервер.
****
А всю эту навороченную автоматику можно отключать, если надо? А то часто
автоматика становится вредной и опасной, если администратор не может вмешаться в логику ее работы.
****
А серверная программа пишет все, что происходит в логи? И можно ли менять детализацию логов?
****
А у меня ATX-корпус, который ни в какую не заводится после прерывания питания.
Ваш WatchDog может нажать кнопку "Power"?
****
А ваш WatchDog перезапускает сервер, отключая у него питание на время?
А можно сделать, чтобы он мог "Reset" вместо этого нажимать?
****
А ваш WatchDog перезапускает сервер, нажимая "Reset"?
А ведь это бывает не помогает, сам видел комп, переклинненый так, что помогло только полное выключение питания.
****
А можно по внешнему виду WatchDog-а понять, что сейчас происходит. Есть
какая-то индикация?
****
Все-таки боязно как-то применять такие крутые меры автоматически,
нет ли каких-то подводных камней?
Проблемы, затронутые во всех вопросах, кроме последнего, - нами решены.
Над последней проблемой мы постоянно работаем.
ВОПРОСЫ, КОТОРЫЕ НАМ НЕ ЗАДАВАЛИ НИ РАЗУ:
А ваше устройство достаточно маленькое, чтобы его можно было носить в кармане?
А нет ли разных цветовых вариантов исполнения?
А нельзя ли сделать совсем простое и тупое устройство? Пусть оно
будет опасно для сервера, но нам нужно дешевле.
На все эти вопросы мы может твердо ответить, - нет.
|