PowerChute Network Shutdown. Настройка автоматического отключения серверов
Вопрос обеспечения бесперебойного энергоснабжения серверов стоит достаточно остро в любой организации — будь то небольшая контора или датацентр с сотнями стоек. Если во втором случае в чрезвычайных ситуациях с подачей электроэнергии из внешних источников в работу включаются генераторы , которые могут обеспечить в некоторых вариантах несколько суток автономной работы (в зависимости от запаса топлива) без вмешательства из вне, то в первом варианте вся нагрузка при отключении электричества ложится на источники бесперебойного питания. Все бы ничего, но вот только основные задачи ИБП — выравнивание напряжения и обеспечение времени работы от батареи в минимальном представлении чуть больше времени выключения самого медленного сервера. Кто-то может поспорить, но все же ИБП не предназначены для обеспечения долговременной (несколько часов и более) работы серверов в ситуации отсутствия электричества, для этого придумали генераторы. Однако покупка генератора, оборудование для него отдельной площадки, прокладка электросети для большинства организаций является неподъемным сценарием, да и, надо признать, абсолютно не нужным.
В таком случае возникает необходимость автоматического отключения серверов до того момента, когда батареи ИБП разрядятся полностью. Теоретически это можно сделать вручную, но даже если у вас всего несколько серверов, это будет не очень удобно и быстро. Ситуация станет серьезной проблемой, если у вас много серверов или ИБП загружены до уровня, близкого к своему максимальному (в этом случае обычно они проработают не более 5-7 минут, если брать в расчет среднестатистический ИБП без дополнительных батарейных блоков). Да и при ручном выключении кто-то должен мониторить ситуацию 24/7, что тоже нереально.
На помощь приходит PowerChute Network Shutdown 1 от APC (далее по тексту PCNS). Эта утилита предназначена для выполнения различных сценариев (чаще всего обычное корректное выключение серверов) при возникновении каких-либо событий в цепи электропитания. Работает она совместно с UPS Network Management Card 2 2 (далее по тексту UPS NMC), которая по сути является платой расширения для различных ИБП. Решение, конечно же, применимо только для ИБП от APC.
В статье я планирую рассказать о своем личном опыте при работе с оборудованием, описанным выше. Большинство моментов касательно установки и настройки оборудования я опущу, поскольку считаю их описание лишим — в сети очень много подробных любительских инструкций, кроме того, сопроводительная литература ко всем продуктам APC доступна в полном объеме и все моменты эксплуатации расписаны крайне подробно.
Итак, к моменту конфигурирования автоматического отключения серверов у меня было следующее оборудование:
1) ИБП Smart-UPS 3000 RM XL 3 ;
2) Установленная и настроенная плата сетевого управления к ИБП: AP9630 4 ;
3) Локальная сеть, в которой находятся плата сетевого управления и целевые серверы.
Задача: настроить PCNS на серверах виртуализации Microsoft Hyper-V 2008 R2 — 2012 R2. Процесс установки PCNS и начального конфигурирования через веб-интерфейс я, как и обещал ранее, намерен пропустить. Если у кого-то с этим возникают сложности, рекомендую обратиться к официальной документации 5 6 .
Основная сложность настройки заключается в том, что нужно точно себе представлять как будет работать система. Больше всего вопросов возникает на сценарии завершения работы серверов, в официальном руководстве рассматриваются различные варианты отключения и в конечном счете они представляются как красивые диаграммы. Много раз прочитав эти примеры, я выработал для себя следующий алгоритм настройки всей системы:
1) Определите максимальное время работы ИБП при отключенном питании и полной нагрузке. У меня оно равнялось 12-14 минутам, поскольку нагрузка была неполная;
2) Разделите все серверы на два списка (можно и на 3, да хоть на 10, но это усложнит конфигурацию) — критически важные для организации серверы (хотя бы один контроллер домена, почтовый сервер, файловое хранилище и т.п.) и серверы, которые можно безболезненно отключить (обкаточные серверы, WSUS, доп. контроллеры домена и т.п., у каждого свое);
3) Для каждой группы серверов определите время их работы после отключения входного питания ИБП. Для важных серверов постарайтесь максимально продлить время работы, то есть отключайте их в самую последнюю очередь (у меня это 5 минут). Обеспечить это можно только отключением маловажных серверов как можно раньше (я остановился на 30 секундах).
Дальше остается только перейти к настройкам установленных агентов PCNS. Для физических серверов и хостов виртуализации настройки будут немного отличаться — на хостах виртуализации нужно установить время задержки для выключения или миграции виртуальных машин:
В остальном все идентичное, остальные настройки я оставил по умолчанию.
Переходим в пункт меню Configure Events, нам нужно первое событие — UPS On Battery (ИБП работает от батареи, то есть входное напряжение либо упало до нуля, либо слишком низкое для нормальной работы), сразу справа от него в столбце Shutdown нажимаем на значок шестеренки (у меня отображается галочка, поскольку я уже настроил действие при работе от батареи). Выставляем нужное вам значение в секундах. Для себя я определил его в 300 секунд. То есть по истечении этого времени система начнет выключаться, но виртуальным машинам будет предоставлено дополнительное время для завершения работы (его мы указали в настройках Shutdown Settings).
После этого самое время протестировать как все работает на реальной ситуации. Для этого я отдельно сымитировал отключение питания — просто выдернул кабель питания из ИБП. Через 30 секунд у меня начали выключаться второстепенные хосты виртуализации и физические серверы, через 5 минут начали заглушаться виртуальные машины на важных инфраструктурных серверах, когда они выключились, хосты виртуализации заглохли и в серверной воцарилась тишина…
На текущий момент я могу дать несколько рекомендаций по настройке. Они могут показаться очевидными, но все же я их опишу. Кто знает, может быть через некоторое время из головы их вытеснит другая информация, а опыт все же полезный.
1) Спланируйте установку CPNS на ваших серверах: далеко не каждая операционная система поддерживается. Нужно также решить что делать с виртуальными машинами на базе unix-систем, возможно придется писать вручную скрипты, чтобы заглушить их корректным образом. С малораспространенными дистрибутивами и, например, системами для NAS (тот же Openfiler) могут быть серьезные проблемы в виду полного отсутствия их поддержки;
2) Не пожалейте дополнительного времени для выключения виртуальных машин. Вы должны понимать, что когда все виртуалки начнут обращаться к жестким дискам, их быстродействие резко снизится и время завершения работы значительно увеличится;
3) Не старайтесь выжать из вашего старичка ИБП полный максимум. Пусть ваши виртуальные машины и серверы завершат работу немного раньше, чем ИБП разрядится полностью. Да даже если он разрядится всего лишь на 50%, что тут такого? Ваша основная задача не продержать серверы включенными как можно дольше, а корректным образом завершить их работу, в конце концов. Также учтите, что со временем ваш ИБП на батареях будет работать все меньше и меньше в виду их износа, а это уже серьезная причина, чтобы оставить достаточный «запас прочности» по времени;
4) Обязательно протестируйте сценарий отключения. Не пожалейте одного выходного и проведите тестирование отключения серверов и виртуальных машин при реальном отключении электричества. Я проводил это ранним субботним утром с секундомеров в руке;
5) Наверно это надо было написать первым пунктом, но все же: купите уже себе плату управления для ИБП, если у вас её все ещё нет (это не реклама). Не жалейте денег, даже если у вас всего пара серверов в стойке и отключение электричества за свою карьеру вы не видели, ведь перебои питания самым худшим образом сказываются на работе приложений, СУБД особенно.
На этом все. Можете упрекать меня за большое количество «воды», но в этой статье я постарался максимально подробно описать мысли и логику принятия решений, ведь мануалы сможет прочитать любой, а личный опыт на дороге не валяется.
Источник
Настройка ИБП Ippon Backpower Pro для автоматического выключения и включения
Купить ИБП для домашнего сервера я собирался давно, но постоянно душила жаба. То есть, особой необходимости в нём не было, просто как-то не по-людски без бесперебойника. В конце-концов, купил дешёвый Ippon Backpower Pro 500 и уселся настраивать. Погуглив пару минут, решил, что официальные драйвера, написанные на java лохматого года выпуска, мне не нравятся и взялся прикручивать NUT.
Настроил. Заработало. Одно «но» — вражеский девайс упорно не желал выключать питание с нагрузки.
То есть, схема задумывалась следующая:
- Пропадает питание — работаем от батареи, сколько можем;
- При разряде батареи подаём ИБП команду выключиться через пару минут и завершаем работу;
- ИБП отключает серверу питание и уходит в ждущий режим;
- При появлении электричества в сети ИБП выходит из ждущего режима и подаёт питание на сервер;
- Сервер заводится, ибо в биосе выставлена соответствующая опция.
Сам ИБП вхолостую будет работать долго, прежде чем на нём сработает защита от переразряда. Понятное дело, что в такой ситуации сервер будет думать, что питание никуда не пропадало и обратно автоматически не включится.
Плюнув, я решил всё-так установить официальные драйвера. Однако и здесь меня ждал облом. Официальный драйвер определял тип ИБП как «regular LINE-INT UPS», для таких устройств выключение ИБП по команде не поддерживалось. Поддерживались лишь какие-то другие, видимо, более навороченные (и дорогие) модели. Приуныв, я удалил неудобный официальный драйвер и поставил NUT обратно, взявшись с безнадёги копаться в исходниках драйвера.
Немножко покурив код драйвера и спеки протокола Megatec, по которому осуществлялось общение с иппонцем, я обнаружил, что выключение по таймеру в девайсе всё же реализовано, хоть и криво. В спеках команда для выключения и последующего включения ИБП выглядит так:
- n — время до выключения ИБП с момента подачи команды.
- m — время до включения ИБП с момента подачи команды. Если m минут уже истекло, а питание для ИБП всё ещё не подаётся, ИБП ждёт появления напряжение в сети и тогда включается.
- Для n диапазон значений может быть либо <.1 — .9>(десятые доли минуты), либо <01-10>(целые минуты).
- Для m диапазон значений — <0001-9999>(целые минуты).
Всё в минутах, заметьте. Мой конкретный экземпляр Ippon Backpower Pro 500 воспринимает первое значение как часы. Брак ли это, или так задумано, чтоб враги не догадались — не знаю. Таким образом, минимальный интервал времени, который я могу указать для выключения ИБП, составляет 6 минут вместо 6-ти секунд. Не зная этой особенности, я вводил значения для выключения около 2-3 минут, а иппонец преданно намеревался ждать 2-3 часа перед тем, как уйти в ждущий режим.
Далее приведу мои конфиги для настройки выключения ИБП через минимальное время (6 минут) после разряда батареи. NUT позволяет следить за целыми сетями бесперебойников, но у меня конфиг простенький:
[ippon]
driver = blazer_usb
port = auto
desc = «Ippon IBP»
default.battery.voltage.high = 13.60
default.battery.voltage.low = 10.60
offdelay = 6
ondelay = 7
Значения default.battery.voltage.high и default.battery.voltage.low служат для вычисления примерного заряда батареи в процентах. Также при снижении напряжения до уровня default.battery.voltage.low запускается скрипт выключения системы. На других ИБП значения могут отличаться. Можете их сначала не указывать, а добавить после замера напряжения при полном заряде ИБП и незадолго до его разряда. Значения можно получить командой upsc . Имя указано в начале секции в квадратных скобках (у меня ippon ).
/etc/nut/upsd.conf — у меня этот файл пуст, все настройки по умолчанию.
[admin]
password = mypass
upsmon master
actions = SET
instcmds = ALL
В этом файле устанавливаются права для различных пользователей. У меня только один пользователь с полными правами.
RUN_AS_USER nut
MONITOR ippon@localhost 1 admin mypass master
MINSUPPLIES 1
SHUTDOWNCMD «/sbin/shutdown -Ph +0»
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Здесь настраиваются параметры слежения за ИБП и завершения работы. В этом файле нужно обратить внимание на значения MONITOR (где указано, за какими ИБП будет следить демон) и SHUTDOWNCMD (команда для завершения работы).
Поскольку в конфигах содержатся пароли для управления ИБП, права на их чтение следует выделить только руту и группе nut.
На этом всё, при исчезновении напряжения в сети, компьютер проработает некоторое время (у меня headless-машинка на двухядерном AMD с парой винтов работает около получаса), потом выключится сам, а через 6 минут выключится и бесперебойник. При появлении питания ИБП включится и подаст питание на нагрузку. Правда, у меня есть нехорошее подозрение, что если питание появится в интервале между выключением компа и выключением ИБП, весь этот план рухнет, но здесь ничего не поделаешь. Разве что купить бесперебойник покруче и подороже.
Источник
Как выключать и включать серверы по сигналу от ИБП?
Здравствуйте. Впервые коснулся задачи покупки серверного ИБП и хочется сделать всё правильно.
Насколько я понимаю нужно брать ИБП с поддержкой модуля snmp, чтобы не быть привязанным к вендору.
А какой софт может выключать север при разряженной батареи ИБП (под windows). Это софт производителя ИБП или можно использовать что-то универсально? Что посоветуете?
Как включать сервер после восстановления питания? Должна быть какая-то wake ona lan утилита?
- Вопрос задан более года назад
- 1452 просмотра
Сервера настроены на включение по подаче питания (как правило) или по таймеру.
Я представляю себе это так: Отключилось электричество. В операционной системе работает программа, которая мониторит состояние ИБП. Ибп сообщает, что потря питания, работа от батареи. Батария 90%, 80% ..
10%. Далее программа даёт сигнал на выключение. Сервер выключился. Напряжение 220 с сервера не уходит. Батарея же ещё на 10% заряжена, а потребления нет. Далее возобновление подачи электричества. С точки зрения сервера ничего не изменилось. Включать его можно либо вручную через ilo/ipmi или как то через wake on lan. Я не прав?
Есть HCL более того есть список рекомендуемых поставщиков.
рекомендуемых производителем серверов? к сожалению у меня зоопарк из ibm, hp, supermicro. Всё не первой свежести.
LAG_LAGbI4, Во всех серверных ОС есть служба энергосбережения, да кстати и в десктопных.
Ваше дело ее только настроить.
Вот подходящее решение для смешанной структуры.
https://habr.com/ru/post/421039/
Кроме того настройки включения для UPS присутствуют в продвинутых моделях
LAG_LAGbI4, Правильно составить план.
0. Описывайте все что делаете в документации. И главное все должны знать где это описано!
1. Настроить UPS задержку после потери питания.
2. UPS минимальный уровень заряда при котором включается питание
3. В зависимости от ОС либо штатными средствами либо обобщенными настроить запуск shutdown script при достижении определенного уровня разряда.
4. Разделить устройства по группам, (Сигнализация, Core network, stuff)
5. На сервере который подключен к ups добавить в shutdown script команды гашения групп по событию.
6. Настроить извещение, sms, email, прямой звонок вам на телефон (тут уж насколько критично)
7. Все события логгировать в журналы системы. Утилиты для записи в лог выбирайте сами.
8. Разработайте регламент разбора полетов. Кто там вырубил и что можно предпринять
9. Разработайте регламент действий после остановки.
10. Составьте график смены батарей.
11. Если вырубается часто, поговорите с электриками что за дела.
Источник