Как разбудить сервер после того, как ИБП выключил его, когда питание от сети восстановлено?

16

У меня есть несколько серверов Linux, подключенных к ИБП APC. Они подключены к ИБП через USB и настроены на отключение, если ИБП посылает сигнал о том, что питание от сети было потеряно и не вернулось через некоторое время. Это хорошо работает. Кроме того, они настраиваются с помощью перемычек для автоматического включения в случае потери питания и последующего возврата. Это тоже хорошо работает.

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

Я надеюсь, что существует устройство, которое может подключаться к предварительным источникам питания от сети и определять состояние возврата питания и отправлять сигналы пробуждения, возможно, через Wake-on-Lan на предварительно сконфигурированные серверы, чтобы разбудить их после того, как питание от сети будет возвращено кому-либо. можете указать мне на.

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

кн.
источник

Ответы:

13

Типичный сценарий, реализуемый при использовании ИБП:

  1. При отключении питания ИБП уведомляет программный компонент подключенной к нему системы (систем).
  2. Если питание теряется дольше, чем n секунд, драйвер ИБП уведомляет ИБП и останавливает систему, не отключая ее (это важно).
  3. ИБП ждет m секунд для остановки системы и отключает питание.
  4. Когда питание восстанавливается и батарея ИБП заряжается выше минимума (чтобы она могла поддерживать включение и чистое отключение в случае потери питания сразу после загрузки машины), ИБП восстанавливает питание систем.
  5. Системы замечают (на уровне BIOS / UEFI), что они были включены до потери питания, поэтому они загружаются.

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

NUT, упомянутый BillThor, должен позволить вам реализовать этот сценарий.

Павел Бродацкий
источник
1
Благодарность! У меня все выше работает, кроме шага (3), мой ИБП не отключает питание, пока батарея не станет слишком низкой. Некоторым из моих серверов может потребоваться до нескольких минут для полной остановки или выключения, а время между выключениями меняется. После того, как ИБП отключит питание по истечении предварительно настроенного времени, я либо буду рисковать отключением питания слишком рано, либо слишком долго жду и буду рисковать возобновлением подачи энергии до того, как ИБП отключит питание, и я никогда не получу свой сигнал включения при загрузке. Возможно, мне нужен ИБП, который поддерживает обратный канал от системы, поэтому он отключается, как только сервер (-ы) прекращает подачу питания.
БК
2
Глядя на документы NUT, я думаю, что проблема, с которой я сталкиваюсь, заключается в следующем, поэтому я попробую решение, которое они рекомендуют там. Спасибо networkupstools.org/docs/FAQ.html#_i_8217_m_facing_a_power_race
bk.
9

Эту проблему я решил с помощью одного небольшого Linux-бокса (Asus wl deluxe или smth), который был подключен к главному ИБП и проснулся как можно скорее при восстановлении питания. Скрипт запуска включает 5-минутную задержку, чтобы избежать любых изменений в состоянии питания (вверх / вниз), WOL-ed всех серверов (все w2k3, один linux) и отправляет мне смс со статусом.

migabi
источник
4

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

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

Работа Диогена Рибейру Борхеса
источник
3

Я использую NUT (Network UPS Tool) для подобных случаев. Вам понадобится сервер на базе Unix / Linux для мониторинга ИБП. Как только начнутся отключения, это обеспечит выключение ИБП. Это восстановит работу серверов, если они будут перезапущены после восстановления питания.

Существует клиент для серверов Windows, поэтому они могут быть полностью отключены.

BillThor
источник
1

Если в вашем BIOS есть возможность установить время включения питания, вы можете установить его на 50 минут после выключения, если выключение инициируется сигналом выключения ИБП.

Таким образом, в вашем сценарии сервер снова заработает через 50 минут + время загрузки + время отключения.

Nils
источник
-2

Мне нравятся все ранее упомянутые идеи. Я хотел бы предложить запустить сервер «NUT» или «WoL» на ноутбуке с закрытой крышкой. Таким образом, он может работать в течение 4-6 часов только от одной батареи. На некоторых ноутбуках могут быть установлены 2 батареи одновременно даже на длительное время работы.

jftuga
источник
Вы должны прочитать комментарий Павла Бродацкого; смысл NUT или apcupsd в том, что сервер Linux может быть выключен без выключения . Это означает, что «последнее состояние» снова включает сервер, после чего он включает все серверы Windows. Долгосрочное резервное копирование батарей здесь совершенно противоположное.
Майкл Лоуман
Как насчет решения WoL, упомянутого migabi?
Jftuga
это одна и та же идея. «включает все серверы Windows» выполняется с помощью WoL; вы не можете использовать свою «коробку WoL» из-за того, как вы должны ее выключать (а именно, чтобы последнее состояние все еще работало)
Майкл Лоуман