Один сервер, два ИБП APC на резервных источниках питания: как выполнить отключение?
У меня установлен сервер, а его резервные источники питания подключены к двум APC Smart-UPS 3000 XLM. Каждый ИБП подключен к двум различным источникам питания.
Работают два экземпляра apcupsd, каждый из которых подключен к своему ИБП. Они оба могут определять, когда ИБП работает от батареи, а затем каждый ИБП может инициировать отключение на сервере.
Вопрос: как НЕ выключить, если только один ИБП разряжается?
Примечание. Smart-UPS 3000 XLM имеет функцию "Синхронизация питания", которая может подключаться к одноранговому узлу и определять его состояние. Но когда я вытащил вилку из одного из них, приказ об отключении все равно был отправлен. Я думаю об изменении сценариев выключения, чтобы проверить с помощью "apcaccess", если другие ups не работают. Любой опыт по этому вопросу будет оценен!
2 ответа
В настоящее время, когда один из двух ИБП умирает, запускается событие doshutdown и выполняется скрипт по умолчанию через apccontrol. Сценарий doshutdown игнорирует вторые ИБП, так как они не связаны с событиями, и обычно выполняет отключение.
Чтобы несколько связать события doshutdown, два экземпляра apcupsd нуждаются в специально настроенном файле конфигурации. Разница будет находиться в каталоге, из которого должны быть выполнены сценарии событий.
Основные свойства первых взлетов, в /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; если нет, файл down создается для того, чтобы ups были сброшены, и завершается. Если да, это означает, что другой ИБП не работает, этот также отключается, поэтому сценарий должен продолжиться и выключить машину.
Файлы /tmp/usp[01].is.down
указать, что в данный момент ups[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
скучал.
Посмотри на ОРЕХ. Это хорошо с этим справляется. Определите количество источников питания от каждого ИБП и количество необходимых источников питания. Отключение не будет запускаться, если на ИБП не хватает питания.