Предистория: Есть автономный (standalone) сервер виртуализации на KVM (CentOS 6). На нем крутиться много виртуальных машин. Он подключен к источнику бесперебойного питания (ИБП) модели APC Back-UPS XS 1100CI.
В нашем офисе очень часто выключают электричество не смотря на расположение в центре города, на ряду с этим, бывают случаи когда чудит полуавтомат, выключаясь не в подходящее время.
Чтобы корректно отключать сервер KVM и обезопасить батареи UPS от преждевременного изнашивания, решено было настроить службу NUT.
Этот демон помогает отключать сервер при низком/среднем заряде батарей.
Обычно UPS подсоединяется к серверу (ПК) через USB кабель, позволяя программно считывать служебные данные о уровне заряда. Мы настроим NUT так, чтобы он считывал эти данные, и в случае низкого или среднего заряда, отключал корректно сервер. Нам потребуется указать в конфигурационных файлах NUT параметры которые определят нужное поведение.
Возможно записка не корректна, буду исправлять ошибки в будущем.
1. Устанавливаем NUT
# yum install nut
Ставим сам NUT:
# yum install nut nut-client -y
Ставим утилиту lsusb которая покажет инфу по USB подключениям:
# yum install usbutils -y
2. Настраиваем NUT
До настройки NUT потребуется узнать данные о USB подключении UPS к ПК. Для этого мы установили утилиту lsusb, и теперь надо ее запустить. Обычно у UPS нашей модели VID и PID следующие 051d и 0002.
Вводим их как параметры для утилиты lsusb:
# lsusb -vd 051d:0002 | grep iSerial
В ответ получаем серийный номер:
iSerial 2 3B1435X33042
[apc]driver = usbhid-upsport = autovendorid = 051dproductid = 0002desc = "APC 1100"serial = 3B1435X33042default.battery.voltage.high = 55default.battery.voltage.low = 47default.battery.voltage.nominal = 48
Здесь мы указали что NUT может обращаться к нашему UPS по имени "apc". Также указали параметры подключения по USB порту. Плюс к этим настройкам добавили такие интересные параметры как максимальный, минимальный и номинальный заряд. Когда заряд опустится до минимального, NUT скомандует серверу, пошлет "shutdown -h", тем самым отключив сервер.
Теперь надо открыть файл /etc/ups/upsd.users
[admin]password = passwordactions = SETinstcmds = ALLupsmon master
MONITOR apc@localhost 1 admin password masterMINSUPPLIES 1SHUTDOWNCMD "/sbin/shutdown -h +0"POLLFREQ 5POLLFREQALERT 5HOSTSYNC 15DEADTIME 15POWERDOWNFLAG /etc/killpowerRBWARNTIME 43200NOCOMMWARNTIME 300FINALDELAY 0
Ставим NUT в автозагрузку и запускаем его:
# chkconfig ups on
# service ups start
3. Проверка
Соединяемся с UPS:
# upsc apc@127.0.0.1
battery.charge: 100battery.charge.low: 10battery.charge.warning: 50battery.date: 2001/09/25battery.mfr.date: 2016/02/26battery.runtime: 2046battery.runtime.low: 120battery.type: PbAcbattery.voltage: 27.1battery.voltage.high: 55battery.voltage.low: 47battery.voltage.nominal: 48device.mfr: American Power Conversiondevice.model: Back-UPS XS 1100CIdevice.serial: 3B1435X33042device.type: upsdriver.name: usbhid-upsdriver.parameter.pollfreq: 30driver.parameter.pollinterval: 2driver.parameter.port: autodriver.parameter.productid: 0002driver.parameter.serial: 3B1435X33042driver.parameter.vendorid: 051ddriver.version: 2.6.5driver.version.data: APC HID 0.95driver.version.internal: 0.37input.sensitivity: mediuminput.transfer.high: 280input.transfer.low: 150input.voltage: 220.0input.voltage.nominal: 230ups.beeper.status: enabledups.delay.shutdown: 20ups.firmware: 920.T2 .Iups.firmware.aux: T3ups.load: 23ups.mfr: American Power Conversionups.mfr.date: 2014/08/31ups.model: Back-UPS XS 1100CIups.productid: 0002ups.realpower.nominal: 660ups.serial: 3B1435X33042ups.status: OLups.test.result: No test initiatedups.timer.reboot: 0ups.timer.shutdown: -1ups.vendorid: 051d
Ссылки: