Так, це можливо. Ось деталі моєї подібної установки.
Конфігурація обладнання:
APC Smart-UPS 1500 підключений до хоста ESXi 5.1 через USB. Віртуальна машина Linux, що працює на цьому хості ESXi. Джерело живлення (UPS) підключений до цього відеомережі за допомогою ESXi USB через опцію пропуску.
Конфігурація програмного забезпечення:
головний підлеглий NUT (Network UPS Tools), що працює в VM, і початковий підлеглий ESXi NUT, що працює на хості ESXi.
Логіка вимкнення:
VM запускає usbhid-up драйвера UPS, який відповідає за зв'язок з UPS через USB. Процес upsd підключається до UPS через драйвер usbhid-ups і відстежує стан UPS. UPSMON майстер - процес , який працює на тій же машині підключається до upsd і ініціює виключення. У хості ESXi працює 2-й екземпляр upsmon, який також підключається до того ж VM upsd через внутрішню мережу.
При відключенні живлення відбувається така послідовність:
- ДБЖ через usbhid-up-звіти повідомляє про зникнення електроенергії.
- (Необов'язково, корисно , якщо ви хочете , щоб виключення в протягом декількох хвилин , а не Low Battery) UPSMON на присвяченому VM upssched 5 хвилин таймера. Таймер припиняється, якщо живлення відновлюється.
- Коли таймер спрацьовує або коли UPS повідомляє про низький рівень заряду акумулятора, оновлення піднімає прапор FSD (примусового вимикання) до збільшення.
- У автономній конфігурації NUT прапор FSD відключив апарат. Але тут команда відключення замінюється простим веденням журналу на кшталт "Я повинен зупинити роботу зараз, але я чекаю хоста". І нічого не робить.
- Прапор FSD також читається ESSi upsmon, який ініціює відключення хоста ESXi.
- Хост ESXi відключає всі віртуальні машини по черзі. Важливим є те, що VM, який запускає upsd, повинен бути відключений останнім (використовуючи конфігурацію послідовності запуску / відключення ESXi).
- Важливо: у цьому VM повинні бути встановлені інструменти vmware. Коли він отримує команду відключення гостя від хоста, запускається скрипт відключення vmware-tools. Цей скрипт перевіряє прапор / etc / killpower . Якщо прапор відсутній, він нічого не робить (це означає відключення користувачем Linux, а не подія UPS). Але якщо прапор існує (FSD активний), то цей скрипт відправляє в UPS команду відстроченого вимкнення (скажімо, через 3 хвилини).
- Після запуску сценарію vmware-tools гостьовий VM вимикається.
- ESXi бачить останній стан живлення VM і знижується сам (це займає близько 1 хвилини, оскільки зараз немає інших машин, що працюють).
- За 2 хвилини, що залишилися, ДБЖ відключає живлення.
- Коли електроенергія відновлюється, ESXi запускається та працює на всіх VM. Спершу слід запустити машину моніторингу ДБЖ (така ж конфігурація, що і для порядку відключення).
Завантаження:
NUT для Linux можна встановити з пакета.
Рідний клієнт NUT для ESXi-сервера можна завантажити за останнім посиланням на цій сторінці: http://www.networkupstools.org/download.html
Деякі мої сценарії та конф-файли є тут (відображаються лише змінені рядки): http://pastebin.com/KkEeanK1
Примітки:
Звичайно, є більше деталей, і мені знадобився певний час, щоб це працювало як слід. Але зараз це дуже добре. Ця система обліковує випадки, коли ви просто вимикаєте VM для моніторингу зсередини (скрипт vmware-tools не запускається), або якщо це хост ESXi ініціював відключення VM (немає / etc / killpower flag, тому не завантажується UPS), або якщо це відключення ESXi (те саме). Єдине важливе, щоб ця VM працювала якнайшвидше після завантаження хоста, і відключити її останньою (тому час зупинки хоста передбачувано - як було сказано вище, для мене це близько 1 хвилини і ще 2 хвилини я резервую на всякий випадок).
Мій UPS-моніторинг Linux VM - це також сервер спільного використання Samba / NFS для зберігання резервних копій, сервер NAT / DHCP для віртуальних машин та деякі інші невеликі сервіси. У режимі очікування потрібні близько 22 МГц спільних процесорів ESXi і близько 10 МБ активної оперативної пам'яті. Завдяки використанню NUT при необхідності ви можете живити більше пристроїв від одного і того ж ДБЖ, і всі вони можна вимкнено витончено. Не потрібно PowerChute та / або дорога мережева карта монітора.