Один сервер, два ДБЖ APC на надмірних джерелах живлення: як викликати відключення?


10

У мене встановлений сервер, і його надлишкові джерела живлення підключені до двох APC Smart-UPS 3000 XLM. Кожен ДБЖ підключений до двох різних джерел живлення.

Запускаються два екземпляри apcupsd, кожен з яких підключений до власного ДБЖ. Вони можуть обидва виявити, коли джерело живлення стоїть на батареї, і кожен ІБП може потім викликати відключення на сервері.

Питання: як НЕ відключити, якщо ВІДБАЛЬНО ОДИН ДБЖ вичерпав акумулятор?

Примітка: Smart-UPS 3000 XLM має функцію "Синхронізація живлення", яка здатна підключитися до свого однорангового і виявити його статус. Але коли я витягнув вилку з одного з них, наказ про вимкнення все одно було надіслано. Я замислююся над тим, щоб змінити сценарії відключення, щоб перевірити "apcaccess", чи не з'явилися інші вікна. Будь-який досвід щодо цього буде вдячний!

Відповіді:


13

В даний час, коли одне з двох ДБЖ помирає, запускається подія дошутдаун та виконує сценарій за замовчуванням через 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 , який не буде безпосередньо вимикати машину, але повинен перевірити, чи інший ДБЖ все ще увімкнено, чи він у режимі відключення.

У верхній частині сценарію дошутдаунду ми могли б додати щось на кшталт

для 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-вниз; якщо ні , то файл вниз створюється для запущених вікон і виходить. Якщо так , це означає, що інший ДБЖ не працює, цей також знижується, тому сценарій повинен продовжуватися і вимикати машину.

Файли /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пропущено.


1
а постійні користувачі можуть зупинити ваш сервер за допомогою touch /tmp/ups1.is.down; торкніться /tmp/ups0.is.down: D Так що краще було б використовувати / var / run, наприклад. Btw. якщо хтось вирізав та вставив рішення, то rm -f /tmp/usp evidence01škar.is.down - це помилка друку. І, до речі, слід видалити /tmp/ups evidence01škar.is.down з випадкового розблокування програми apccontrol, коли живлення повернеться.
Harka Gyozo

1
Я б запропонував торкнутися вашого власного файлу is.down перед тим, як перевірити інший - таким, яким він є зараз, я думаю, що крихітне вікно стану гонки є, якщо обидва вікна виходять точно в один і той же час.
Майкл Коне

4

Подивіться на NUT. Це добре справляється. Визначте кількість джерел живлення від кожного ДБЖ та кількість необхідних джерел живлення. Відключення не буде спрацьовувати доти, доки не буде встановлено достатнього джерела живлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.