Да, это возможно. Вот подробности моей аналогичной установки.
Конфигурация оборудования:
APC Smart-UPS 1500 подключен к хосту ESXi 5.1 через USB. Виртуальная машина Linux, работающая на этом хосте ESXi. ИБП подключен к этой виртуальной машине с помощью опции сквозного подключения ESXi USB.
Конфигурация программного обеспечения:
мастер NUT (Network UPS Tools), работающий на виртуальной машине, и собственный ведомый NUT ESXi, работающий на хосте ESXi.
Логика выключения:
VM запускает драйверы ИБП, которые отвечают за связь с ИБП через USB. Процесс upsd подключается к ИБП через драйвер usbhid-ups и отслеживает состояние ИБП. Главный процесс upsmon, запущенный на той же машине, подключается к upsd и инициирует завершение работы. На хосте ESXi запущен второй экземпляр upsmon, который также подключается к той же виртуальной машине upsd через внутреннюю сеть.
При сбое питания происходит следующая последовательность:
- UPS через usbhid-ups сообщает upsd о сбое питания.
- (необязательно, полезно, если вы хотите выключить через несколько минут вместо низкого заряда батареи) upsmon на виртуальной машине запускает 5-минутный таймер с повышением скорости Таймер отменяется, если питание восстановлено.
- Когда срабатывает таймер или когда ИБП сообщает о низком заряде батареи, upsmon поднимает флаг FSD (принудительное отключение) до upsd.
- В автономной конфигурации NUT флаг FSD отключит машину. Но здесь команда shutdown заменяется простой регистрацией, такой как «Я должен завершить работу сейчас, но вместо этого я жду хоста». И ничего не делает.
- Флаг FSD также считывается приложением ESXi upsmon, которое инициирует отключение хоста ESXi.
- Хост ESXi отключает все виртуальные машины одну за другой. Важно то, что виртуальная машина, которая запускает upsd, должна быть отключена последней (используя конфигурацию последовательности запуска / выключения ESXi).
- Важно: на этой виртуальной машине должны быть установлены инструменты VMware. Когда он получает команду гостевого выключения от хоста, запускается скрипт выключения vmware-tools. Этот скрипт проверяет наличие флага / etc / killpower . Если флажок отсутствует, он ничего не делает (это означает, что пользователь отключил linux, а не событие ИБП). Но если флаг существует (FSD активен), то этот сценарий отправляет ИБП команду отложенного отключения питания (скажем, через 3 минуты).
- После запуска скрипта vmware-tools гостевая виртуальная машина отключается.
- ESXi видит последнее состояние выключения виртуальной машины и отключается (это занимает около 1 минуты, потому что другие машины сейчас не работают).
- Через 2 оставшиеся минуты ИБП отключает питание.
- Когда питание восстанавливается, ESXi запускается и включает все виртуальные машины. Сначала необходимо запустить ИБП (та же конфигурация, что и при отключении).
Загрузки:
NUT для Linux может быть установлен из пакета.
Собственный клиент NUT для сервера ESXi можно загрузить по последней ссылке на этой странице: http://www.networkupstools.org/download.html.
Некоторые мои скрипты и файлы conf находятся здесь (показаны только измененные строки): http://pastebin.com/KkEeanK1
Примечания:
Конечно, есть еще детали, и мне потребовалось некоторое время, чтобы все заработало как надо. Но сейчас это работает очень хорошо. Эта система учитывает случаи, когда вы просто выключаете виртуальную виртуальную машину изнутри (сценарий vmware-tools не запускается) или если это отключение виртуальной машины, инициированное хостом ESXi (без флага / etc / killpower, поэтому загрузка ИБП не отключается), или если это отключение ESXi (то же самое). Единственное, что важно - это запустить эту виртуальную машину как можно скорее после загрузки хоста и завершить ее в последний раз (поэтому время простоя хоста предсказуемо - как сказано выше, для меня это составляет около 1 минуты и еще 2 минуты, которые я оставляю на всякий случай).
Мой ИБП, контролирующий виртуальную машину Linux, также является сервером общего доступа Samba / NFS для резервного копирования, сервером NAT / DHCP для виртуальных машин и некоторыми другими облегченными службами. Требуется около 22 МГц общих ресурсов процессора ESXi и около 10 МБ активной памяти в режиме ожидания. Благодаря использованию NUT вы можете при необходимости питать больше устройств от одного ИБП, и все они могут быть отключены изящно. Не требуется PowerChute и / или дорогая карта сетевого монитора.