Пожалуйста, помогите разобраться, как работает NUT (Network UPS Tools).
В документации описан алгоритм завершения работы мастера и слейвов, но не могу понять, как гарантируется безопасное выключение слейвов, или как установить задержку, чтобы они успели завершить работу.
Вижу 2 пути:
1) Задать FINALDELAY или HOSTSYNC в upsmon.conf у мастера. Стоит ли поставить в HOSTSYNC время, нужное для выключения самого медленного слейва?
В этом случае, получается, серверы будут завершать работу последовательно: сперва слейвы, затем мастер.
2) Задать задержку выключения на самом UPS. Например, у моего UPS есть параметр ups.delay.shutdown, но он не доступен для записи с помощью upsrw. Его значения, 1 минуты, не хватит для завершения работы моих подопечных.
Пытаюсь разобраться с этим в такой среде:
2 сервера в стойке. Оба отвечают за виртуализацию. Бесперебойник APC Smart-UPS SC 1500VA подключен к одному из них. Они могут выключаться довольно долго, в зависимости от того, как долго выключаются виртуалки. Таймаут отключения виртуалок - 3 минуты. Плюс, порядок отключения такой, что сначала выключается большинство VM, потом VM с контроллерами домена. Теоретически серверы при "тупняках" виртуалок могут выключаться больше 6 минут.
Дистрибутив — Debian Wheezy (amd64) с доустановленным Proxmox 3.2.
Настройки NUT на сервере с подключенным UPS (без строк комментариев).
Spoiler
Код: Выделить всё
nut.conf:
MODE=netserver
ups.conf:
[apc]
driver = apcsmart
port = /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
desc = "APC Smart-UPS SC 1500VA (SC1500I)"
ignorelb
override.battery.charge.low = 10
override.battery.runtime.low = 420
upsd.conf:
LISTEN 0.0.0.0
upsd.users:
[localmon]
password = pa55word
upsmon master
[server2]
password = pa55word
upsmon slave
upsmon.conf:
MONITOR apc 1 localmon pa55word master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5Вывод upsc.
Spoiler
Код: Выделить всё
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.low: 10
battery.charge.restart: 00
battery.date: 08/09/12
battery.runtime: 2700
battery.runtime.low: 420
battery.voltage: 26.93
battery.voltage.nominal: 024
device.mfr: APC
device.model: Smart-UPS SC1500
device.serial: серийник
device.type: ups
driver.flag.ignorelb: enabled
driver.name: apcsmart
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
driver.version: 2.6.4
driver.version.internal: 3.04
input.frequency: 50.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: line voltage notch or spike
input.voltage: 228.0
input.voltage.maximum: 228.0
input.voltage.minimum: 226.0
output.voltage: 228.0
output.voltage.nominal: 230
ups.delay.shutdown: 060
ups.delay.start: 000
ups.firmware: 738.3.I
ups.id: UPS_IDEN
ups.load: 026.0
ups.mfr: APC
ups.mfr.date: 08/09/12
ups.model: Smart-UPS SC1500
ups.serial: серийник
ups.status: OL
ups.test.interval: 1209600
ups.test.result: NOВывод upsrw.
Spoiler
Код: Выделить всё
[battery.date]
Battery change date
Type: STRING
Value: 08/09/12
[ups.id]
UPS system identifier
Type: STRING
Value: UPS_IDENP.S. Уже пробовал тушить все, и, вроде бы, выключалось нормально. Но непонимание может потом вылезти боком.
P.S.S. "Слейвом" я обозвал slave, машину, которая питается от UPS, но не управляет им : )