Записи с Меткой ‘ nut

NUT и настройка клиентов

NUT и настройка клиентов
Имея один UPS, подключил на его нагрузку три сервера — FreeNAS, FreeBSD и Windows XPSP3. Встала задача организовать их корректное отключение в случае продолжительного отсутствия электропитания, когда заряд батареи снижается ниже некоторого порогового значения в %. Для этого я выбрал FreeNAS в роли ведущего, оповещающего по сети состояние UPS, а в роли клиентов — FreeBSD и Windows. На FreeNAS запущена и настроена UPS служба, которая реализована пакетом NUT (Network UPS Tools) и работает в режиме master с удаленным мониторингом. Разберемся сначала с Windows клиентом NUT…

В интернете нашел всего две программы реализующие функции клиента NUT. Первая из них WinNutClient обладает GUI интерфейсом для отображения текущего состояния UPS, вторая WinNUT такой возможностью не обладает, но может работать в качестве службы. Ее и будем юзать…

Скачав установочный пакет WinNUT распакуем и проинсталлируем его выбрав вариант Full instalation. В главном окне программы отметим флажок Install As Service, чтобы задействовать службу как сервис Windows, и флажок Automatic Startup, чтобы сервис стартовал после загрузки Windows.

Теперь перейдем к настройке, которая заключается в правке файла upsmon.conf. Рассмотрим ключевые моменты.

1) Чтобы реагировать на сигналы, надо определить ведущую систему:

MONITOR ups@enconas 1 root freenas slave

Здесь после @ идет сетевое имя компьютера на котором работает NUT сервер. По умолчанию для связи используется порт 3493, но его можно переопределить, задав явное значение через двоеточие (например enconas:5678). Значение 1 указывает на количество батарей UPS. Далее идут логин и пароль на доступ к серверу.

2) После получения от NUT сервера сигнала FSD, необходимо завершить работу Windows:

SHUTDOWNCMD «shutdown -s»

3) Перед отключением Windows желательно об этом сообщить пользователю:

NOTIFYCMD «c:\\Program Files\\WinNUT\\alertPopup.exe»

Закончив этап настройки можно запустить сервис на исполнение. Для этого жмем кнопку «Apply and Start WinNUT». Состояние строки Status: должно измениться с Not Running на Running as Service, а в логе не должно быть ошибок!

Дополнительно задайте в файле upsmon.conf:
Процент заряда батареи, при котором начнется завершение работы системы FINALDELAY;
Частоту опроса UPS в секундах POLLFREQ и POLLFREQALERT. Общее положение таково, что чем выше частота опроса, тем меньше вероятность пропустить важный сигнал от UPS, но тем выше «зашумление» сети, и наоборот.
Можно эмулировать наступление критического состояния UPS командой # upsmon -c fsd на NUT сервере (выполняющего в режиме master`а).

NUT + APC smartups 2200

Спасибо
http://alexeyantonov.wordpress.com/2011/03/03/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-nut-%D0%B4%D0%BB%D1%8F-apc-smart-ups-1000-sua1000-%D0%B2-debian/
И
http://habrahabr.ru/post/102032/

Имеем: APC Smart-UPS 1000 и несколько компьютеров под Linux. Задача: настроить NUT для работы с ИБП, подключаемым по USB.

Устанавливаем NUT: aptitude install nut
В /etc/nut/ups.conf создаем описание нашего ИБП:
[apc]
driver = usbhid-ups
port = auto
desc = «UPS host»
Пробуем запустить upsdrvctl:
sudo upsdrvctl start
Должно появиться что-то вроде
Network UPS Tools — UPS driver controller 2.2.2
Network UPS Tools: 0.29 USB communication driver — core 0.33 (2.2.2)
Using subdriver: APC HID 0.92Если получаем ошибку could not detach kernel driver from interface 0, то делаем:
sudo udevadm control —reload-rules
sudo udevadm trigger
После чего снова делаем sudo upsdrvctl start
Теперь настраиваем /etc/nut/upsd.conf:
LISTEN IP_ADDRESS 3493
MAXCONN 4
Правим файл с пользователями /etc/nut/upsd.users (для нескольких пользователей — несколько записей. Не забываем про allowfrom):
[USER_NAME]
password = PASSWORD
allowfrom = localhost
upsmon master
И настраиваем /etc/nut/upsmon.conf:
MONITOR apc@IP_ADDRESS 1 USER_NAME PASSWORD master
Перезапускаем все:
sudo /etc/init.d/nut restart

——————————————————————————
Настройка ИБП Ippon Backpower Pro для автоматического выключения и включения
Linux*
Купить ИБП для домашнего сервера я собирался давно, но постоянно душила жаба. То есть, особой необходимости в нём не было, просто как-то не по-людски без бесперебойника. В конце-концов, купил дешёвый Ippon Backpower Pro 500 и уселся настраивать. Погуглив пару минут, решил, что официальные драйвера, написанные на java лохматого года выпуска, мне не нравятся и взялся прикручивать NUT.

Настроил. Заработало. Одно «но» — вражеский девайс упорно не желал выключать питание с нагрузки.

То есть, схема задумывалась следующая:
Пропадает питание — работаем от батареи, сколько можем;
При разряде батареи подаём ИБП команду выключиться через пару минут и завершаем работу;
ИБП отключает серверу питание и уходит в ждущий режим;
При появлении электричества в сети ИБП выходит из ждущего режима и подаёт питание на сервер;
Сервер заводится, ибо в биосе выставлена соответствующая опция.

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

Плюнув, я решил всё-так установить официальные драйвера. Однако и здесь меня ждал облом. Официальный драйвер определял тип ИБП как «regular LINE-INT UPS», для таких устройств выключение ИБП по команде не поддерживалось. Поддерживались лишь какие-то другие, видимо, более навороченные (и дорогие) модели. Приуныв, я удалил неудобный официальный драйвер и поставил NUT обратно, взявшись с безнадёги копаться в исходниках драйвера.

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

S n R m cr

n — время до выключения ИБП с момента подачи команды.
m — время до включения ИБП с момента подачи команды. Если m минут уже истекло, а питание для ИБП всё ещё не подаётся, ИБП ждёт появления напряжение в сети и тогда включается.
Для n диапазон значений может быть либо {.1 — .9} (десятые доли минуты), либо {01-10} (целые минуты).
Для m диапазон значений — {0001-9999} (целые минуты).

Всё в минутах, заметьте. Мой конкретный экземпляр Ippon Backpower Pro 500 воспринимает первое значение как часы. Брак ли это, или так задумано, чтоб враги не догадались — не знаю. Таким образом, минимальный интервал времени, который я могу указать для выключения ИБП, составляет 6 минут вместо 6-ти секунд. Не зная этой особенности, я вводил значения для выключения около 2-3 минут, а иппонец преданно намеревался ждать 2-3 часа перед тем, как уйти в ждущий режим.

Далее приведу мои конфиги для настройки выключения ИБП через минимальное время (6 минут) после разряда батареи. NUT позволяет следить за целыми сетями бесперебойников, но у меня конфиг простенький:

/etc/nut/nut.conf

MODE=standalone

/etc/nut/ups.conf

[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 — у меня этот файл пуст, все настройки по умолчанию.

/etc/upsd.users

[admin]
password = mypass
upsmon master
actions = SET
instcmds = ALL

В этом файле устанавливаются права для различных пользователей. У меня только один пользователь с полными правами.

/etc/nut/upsmon.conf

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.

http://www.ignix.ru/book/freebsd/daemon/network_ups_tools — Очень разжеванно