Назад | Перейти на главную страницу

Один сервер, два ИБП APC на резервных источниках питания: как запустить выключение?

У меня стоит сервер в стойке, и к нему подключены резервные блоки питания к двум APC Smart-UPS 3000 XLM. Каждый ИБП подключен к двум разным источникам питания.

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

Вопрос: как НЕ выключиться, если разрядилась батарея ТОЛЬКО ОДНОГО ИБП?

Примечание. Smart-UPS 3000 XLM имеет функцию «Power Sync», которая может подключаться к своему одноранговому узлу и определять его состояние. Но когда я вытащил вилку из одного из них, приказ о выключении все равно был отправлен. Я подумываю изменить сценарии выключения, чтобы проверить с помощью "apcaccess", не работают ли другие ибы. Любой опыт в этом отношении будет оценен!

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

Чтобы иметь Doshutdown события несколько связаны, два экземпляра apcupsd нуждаются в специально настроенном файле конфигурации. Разница будет находиться в каталоге, из которого должны выполняться сценарии событий.

Основные характеристики first ups, in /etc/apcupsd/apcupsd.ups0.conf

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

И для ups1, в /etc/apcupsd/apcupsd.ups1.conf

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

Каждый scriptdir должен получить копию скриптов по умолчанию.
Мы хотим настроить Doshutdown сценарий, который не будет напрямую выключать машину, но должен проверить, включен ли другой ИБП или находится в режиме выключения.

В верхней части Doshutdown скрипт, мы могли бы добавить что-то вроде

для ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

для ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

статус 99 имеет особое значение, что говорит apccontrol чтобы остановить текущее действие. Пять строк проверяют, был ли создан другой файл UPS-down; если нет, файл down создается для упавших ups и завершается. Если да, что означает, что другой ИБП не работает, этот тоже выходит из строя, поэтому сценарий должен продолжить работу и выключить машину.

Файлы /tmp/usp[01].is.down указывает, не работает ли ИБП [01] в данный момент.

Важно: сценарий запуска init.d apcupsd должен удалить эти файлы, если они были созданы в предыдущем сеансе:

rm -f /tmp/usp[01].is.down

Наконец, каталогам, созданным выше, / etc / apcupsd / ups [01] должен быть предоставлен доступ к apcupsd пользователю (или любому соответствующему пользователю, запускающему экземпляры).

chown -R apcupsd /etc/apcupsd/ups[01]

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

редактировать исправил /tmp/ups[01].is.down имена, .is скучал.

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