Відключення VMware ESXi, викликане APC UPS, підключений через USB


18

Я доставляю купу серверів ESXi 5.1 у віддалені офіси, де вони будуть живитись через APC UPS.

Мені б хотілося, щоб UPS викликав відключення підключеного сервера - я б тоді покладався на конфігурацію ESXi, щоб подбати про відключення / призупинення розміщених на ньому VM.

Я можу бачити, що APC має рішення, задокументовані за допомогою їхнього PowerChute Network Shutdown , але це передбачає налаштування додаткового сервера на офіс і вимагає мережевих карт на кожному ДБЖ. Зазвичай ми використовуємо UPS без мережевої карти (наприклад, Back-UPS Pro) - вони поставляються з USB-роз'ємом, і вони доступні в місцях, де є наші офіси.

Як я можу підключити ДБЖ до хоста ESXi через USB, щоб ESXi виявив відключення живлення і потім діяв відповідно? Хтось встиг це зробити.


1
Ви приурочили процес відключення віртуальних машин через відключення хоста? Чи може акумулятор тримати досить довго за цей період?
ewwhite

Дякуємо, що вказали на це. Ще немає - на цьому етапі я просто доставляю ESXi-сервери для запуску контролера домену, але я впевнений, що як тільки у нас буде ресурс на місці, ми додамо ще кілька серверів, і в цей момент час може змінитися.
dunxd

Політика відключення за замовчуванням досить довга. Якщо чесно, я не запускаю ІБП відключення на своїх хостах або кластерах ESXi. Здається, контр-інтуїтивно зрозумілим, але це ніколи не було проблемою.
ewwhite

Навіщо взагалі турбуватися тим, що UPS на ваших хостах ESXi взагалі? Якщо живлення виходить через відключення або через те, що акумулятор розрядився, ви отримаєте такий же результат.
dunxd

Для коротких перебоїв у погоді. Але на моїх великих сайтах у мене є 2-4 години енергії ДБЖ, доступні для кластеру, зберігання та мереж VMWare.
ewwhite

Відповіді:


5

За інформацією APC, це неможливо, і вам потрібно відключити мережу Powerchute Network. Ми кілька разів намагалися це зробити через USB і не знайшли рішення.

VMWare має тут інформацію про використання рішення, затвердженого APC.

Також вважає, що SmartUPS буде кращим вибором, і ви можете підходити до мережевої карти. Звичайно більше грошей, але якщо ваші сервери взагалі важливі, ці витрати повинні бути варті того. Також надає більше моніторингу та оповіщення, які можуть бути корисні на віддаленому сайті. Вам також потрібно забезпечити достатню кількість часу виконання для всіх віртуальних машин для чистого відключення, а потім відключення хоста


1
Це здається, що найрозумніша відповідь підтримується обома постачальниками. Прикро, що VMware не думав щось вбудовувати в ESX / ESXi, що робить це споконвічно. Мережеве рішення вимагає, щоб принаймні один мережевий комутатор живився і через ДБЖ.
dunxd

2
Не було б багато сенсу не перемикати мережеві комутатори через ДБЖ ... вони споживають дуже мало корректних даних і є критичними для будь-якої роботи мережі.
Массімо

21

Так, це можливо. Ось деталі моєї подібної установки.

Конфігурація обладнання: 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 через внутрішню мережу.

При відключенні живлення відбувається така послідовність:

  1. ДБЖ через usbhid-up-звіти повідомляє про зникнення електроенергії.
  2. (Необов'язково, корисно , якщо ви хочете , щоб виключення в протягом декількох хвилин , а не Low Battery) UPSMON на присвяченому VM upssched 5 хвилин таймера. Таймер припиняється, якщо живлення відновлюється.
  3. Коли таймер спрацьовує або коли UPS повідомляє про низький рівень заряду акумулятора, оновлення піднімає прапор FSD (примусового вимикання) до збільшення.
  4. У автономній конфігурації NUT прапор FSD відключив апарат. Але тут команда відключення замінюється простим веденням журналу на кшталт "Я повинен зупинити роботу зараз, але я чекаю хоста". І нічого не робить.
  5. Прапор FSD також читається ESSi upsmon, який ініціює відключення хоста ESXi.
  6. Хост ESXi відключає всі віртуальні машини по черзі. Важливим є те, що VM, який запускає upsd, повинен бути відключений останнім (використовуючи конфігурацію послідовності запуску / відключення ESXi).
  7. Важливо: у цьому VM повинні бути встановлені інструменти vmware. Коли він отримує команду відключення гостя від хоста, запускається скрипт відключення vmware-tools. Цей скрипт перевіряє прапор / etc / killpower . Якщо прапор відсутній, він нічого не робить (це означає відключення користувачем Linux, а не подія UPS). Але якщо прапор існує (FSD активний), то цей скрипт відправляє в UPS команду відстроченого вимкнення (скажімо, через 3 хвилини).
  8. Після запуску сценарію vmware-tools гостьовий VM вимикається.
  9. ESXi бачить останній стан живлення VM і знижується сам (це займає близько 1 хвилини, оскільки зараз немає інших машин, що працюють).
  10. За 2 хвилини, що залишилися, ДБЖ відключає живлення.
  11. Коли електроенергія відновлюється, 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 та / або дорога мережева карта монітора.


14

Супер питання. Насправді це можливо зробити досить непогано - принаймні на деяких налаштуваннях. Я спробував наступний рецепт на ряді хостів ESXi 5.5. В основному, рішення виглядає так:

  1. Увімкніть доступ SSH на хості ESXi
  2. Створення Linux VM - я використовую Ubuntu. Вам потрібна лише дуже мінімальна настройка - без GUI чи нічого.
  3. Підключіть свій пристрій APC через USB до хоста ESXi та передайте його до Linux VM.
    • Переконайтесь, що USB-контролер, який ви додаєте до VM, відповідає фактичному фізичному USB-контролеру, до якого підключено пристрій APC, тобто додайте лише контролер XHCI, якщо фізичний пристрій є пристроєм USB3. Невідповідність, здається, викликає дивні проблеми в драйвері USB-пристроїв Linux.
    • Якщо що - то не працює, і ви бачите помилки , як ctrl urb status -62в dmesg, швидше за все , фізичний контролер не відповідає в вашому VM. Якщо вони відповідають - добре, це проблема. У мене є одна установка з такою проблемою, і немає реального вирішення її.
  4. Встановіть apcupsdна Linux VM - в Ubuntu ви можете зробити sudo apt-get install apcupsdвстановлення останньої версії. Проект NUT також приємний, але я традиціоналіст.
  5. Встановіть утиліту plink sudo apt-get install putty-tools
  6. Підключіться до хоста ESXI, зробивши це plink root@<your ESXi host IP>. Ви можете негайно перервати з'єднання. Мета полягає в тому, щоб зберегти хост-ключ, щоб планка не запросила його знову, коли ми запускаємо його через сценарій
  7. Відредагуйте /etc/apcupsd/apcupsd.confта змініть елементи нижче, щоб вони відповідали: UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE Також переконайтеся, що /etc/default/apcupsdєISCONFIGURED=yes
  8. Відредагуйте /etc/apcupsd/apccontrolта перейдіть до doshutdownсправи. Зробіть це так: doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. Перезапустіть apcupsd за допомогою sudo service apcupsd restartта перевірте, чи спрацьовують справи, за допомогою виклику apcaccess. Якщо ні, перевірте журнали та dmesg
  10. Переконайтесь, що на всіх віртуальних машинах, які потребують гарного вимкнення у разі відключення електроенергії, встановлено інструменти VMWare. Також переконайтеся, що вони є частиною списку запуску / відключення VM (у веб-клієнті vSphere перейдіть за посиланням:) vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown. Переконайтесь, що дія закриття полягає у вимкненні гостьової ОС.

Після запуску цих doshutdownзавдань сценарій з кроку 8 викликається збою живлення. Це черга викликає скрипт shutdown.sh на хості ESXi, який передає пакет VMWare Tools у кожному VM вашого хоста для чистого відключення через гостьову ОС. На мій досвід, він працює краще, ніж програмне забезпечення PowerChute від APC.

Якщо ви хочете стежити за речами з своїх віртуальних машин, ви можете налаштувати на них підлеглі екземпляри apcupsd, які підключаються до головного управління UPS Linux VM. У ваших файлах slave apcupsd.conf має бути такий запис:
UPSTYPE net < your UPS control VM IP >:3551
записи подібні UPSCABLEта подібні у цьому випадку не мають значення. Це працює і з версією Windows apcupsd(доступна тут ). Ви можете використовувати включене, apctray.exeщоб перевірити поточний стан речей.

Я думаю, що це в значній мірі охоплює це.


+1 працював як шарм. Перший раз!
Мортен Крістенсен

Ця відповідь спрацювала чудово, хоча в офісі мого клієнта нам довелося doshutdownтрохи підправити послідовність. Ми додали ${APCUPSD} --killpowerбезпосередньо перед /usr/bin/plinkчастиною, щоб ДБЖ вимкнувся через деякий час і автоматично перезапустився, коли живлення повернеться. Крім того , варто відзначити , що крок 6 повинно бути зроблено як rootпридбані з допомогою suабо sudo su, а НЕ sudo -s .
Андреа Лацаротто

4

Ви можете подумати про використання функціональності USB-пристрою для гостя, який працює з PowerChute або іншим програмним забезпеченням, здатним стежити за станом здоров'я ІБП і здатним викликати відключення на хості ESXi (наприклад, apcupsd ). ESXi офіційно підтримує лише обмежену кількість USB-пристроїв для останнього проходження, але люди вже певний час приєднуються та проходять через різні класи пристроїв, однак APC UPS USB, здається, працює відповідно до цієї інструкції для Windows VM або цей для CentOS Linux VM .


2

Погляньте на помічника vSphere Management Assistant (vMA) звідси. Ми використовуємо його в моєму офісі для того, щоб робити те, що ви намагаєтеся, однак із Smart-UPS, підключеним через USB, а не Back-UPS.


Будь ласка, додайте більше деталей, оскільки це незадокументована установка щодо APC або vmware.
dunxd

1

Хоча це можливо (напевно / загалом), я не вважаю, що автоматичне відключення комп'ютера від живлення акумулятора є гарною ідеєю. Якщо ви збираєтесь це робити, то для більшості практичних намірів і цілей ви, мабуть, просто заощадите гроші від ДБЖ, що підтримується батареєю, і нехай втрата електроенергії вимкне вашу машину для вас. (Зрозуміло, чисте вимкнення завжди є кращим перед втратою електроенергії, але, здається, вам не вистачає часу, коли час батареї перевищує пару хвилин, якщо ви автоматично вимикаєте кожну річ, коли втрачаєте живлення. )

Те, як я завжди працював, - це спостереження за спостереженням СА, коли потужність знижується, щоб SA могли використовувати свою сіру речовину, щоб вирішити, коли (або навіть якщо) закрити сервери. Якщо це короткий відключення, можливо, це не буде ідеєю взагалі відключати сервери, або ви можете залишити деякі сервери та працювати якомога довше, а вимкнути їх лише до того, як батарея почне згасати. Дійсно мені здається, що завдання прийняття рішень краще підходить людині, ніж просте правило.


Вам не доведеться конфігурувати свій ДБЖ, щоб негайно викликати відключення, але ви хочете, щоб він вимкнувся до того, як батареї повністю зникнуть, вам доведеться купувати більше акумуляторів, особливо в деяких місцях, де я працюю, і потужність йде щодня. Звісно, ​​звичайно, залучати людей, але ви не завжди маєте системного адміністратора у віддаленому офісі.
dunxd

@dunxd Добрий момент - я більше звик до середовищ HA, де хоча б деяким серверам доводиться стояти, пекло або багато води, тому назва гри з’ясовує, як найкраще нормувати потужність (вибірково закривати пристрої вниз), щоб створити найменший можливий вплив на службу, який не буде зосередженим на всіх чи у випадку використання.
HopelessN00b

1

За старих часів бареметальних установок APC PowerChute Plus була важливою частиною мого процесу встановлення. Використовуючи простий кабель послідовної сигналізації та їх двійковий код , призначений лише для Red Hat , було легко встановити правила для керування сервером, приєднаним до локальної мережі. Доступні основні сповіщення електронною поштою про події батареї UPC, події живлення лінії та дії відключення:

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

і

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

або

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

Плюс розумний інтерфейс, щоб побачити, що відбувається ...

введіть тут опис зображення

Це програмне забезпечення з часом стало комерційним (або було поховано на веб-сайті APC). Існувало кілька підходів із відкритим кодом, щоб створити щось подібне. Але це все ускладнюється з єдиними хостами VMWare ESXi.

Здається, що це щось, що VMWare має бути включено до базового гіпервізора. Це основна і може запропонувати користувачам гідний рівень захисту. Найпоширеніші засоби захисту, які я бачу зараз, - це USB-перехід до спеціальної VM, мережевий демон-підхід або виконання того, що я роблю; не налаштовано автоматичного відключення або відключення акумулятора ...

Зрозуміло, я зазвичай працюю з ДБЖ, який може підтримувати завантаження системи протягом години або більше, але тривалі відключення НЕ трапляються. Можливо, альтернативою є зібрати кілька недорогих або відремонтованих мережевих інтерфейсних карт і планувати купувати пристрої SmartUPS як мінімум ...


0

Перевірте наступне посилання . Не найелегантніше рішення, але дуже практичне, дуже відверте рішення. Можливі недоліки в плані безпеки (залежно від конкретного дизайну мережі, гостей, завантажених на хости, та користувачів доступу до них, але ви можете зробити цей дзвінок.


0

Я використовував рішення MrMajestyk і лише змінив доступ до ssh через plink з ssh доступом без пароля, використовуючи відкритий ключ rsa. Ключ rsa, згенерований у VM apcupsd, повинен бути включений у / etc / ssh / keys-root / санкціоновані_кеї хоста vmware.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.