Налаштування роботи VMWare ESXi з джерелом безперебійного живлення (UPS) - Компанія IT Stream,
Існує сервер віртуалізації з VMWare ESXi, що працює через джерело безперебійного живлення APC Smart-UPS SC1500. Також є завдання навчити цей сервер коректно вимикатись (і не менш коректно вимикати всі віртуалки) при відключенні електрики. При цьому на сервері є віртуалка із встановленим Ubuntu Server 12.04. Так, як безпосередньо ESXi не можна навчити працювати з упсом, то ця віртуалка і займатиметься моніторингом UPS. Рішення цього завдання ділиться на кілька етапів.
1. Встановлення VMWare tools на Ubuntu Server
Якщо цього не зробити, то коректного вимкнення віртуалки засобами ESXi просто не вдасться. Без VMWare tools вимкнення буде схоже на вирубування живлення. Отже, ставимо VMWare tools. Переходимо в меню "Virtual Machine" - "Install VMware Tools" (або "VM" - "Install VMware Tools"). Створюємо каталог для монтування образу:sudo mkdir /mnt/cdrom
Монтуємо образ:sudo mount /dev/cdrom /mnt/cdrom
Розпаковуємо пакет у тимчасовий каталогtar xzvf /mnt/cdrom/VMwareTools-x.x.x-xxxx.tar.gz -C /tmp/
Переходимо тудиcd /tmp/vmware-tools-distrib/
І встановлюємо VMWare toolssudo./vmware-install.pl -d
Далі потрібно перезавантажити наш сервер. Якщо є ще якісь віртуальні сервери, то встановлюємо VMWare tools на все.
2. Встановлення та налаштування apcupsd
Для моніторингу UPS найчастіше використовується NUT, але так як у нас безперебійник APC, то скористаємося утилітою apcupsd, яка значно простіша в налаштуванні. Для початку її встановимо:# apt-get install apache2 apcupsd apcupsd-cgi
Без apache2 і apcupsd-cgi можна обійтися.Безпосередньо для роботи вони не потрібні. Але подивитися стан UPS через веб-інтерфейс приємно, та й швидше, ніж логінитися в консоль сервера і дивитися там. Тому ставимо всі три пакети. Тепер потрібно з'єднати UPS кабелем із сервером VMWare ESXi та прокинути USB-пристрій на віртуалку з Ubuntu.

$ lsusb Bus 002 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Після під'єднання кабелю в системі має з'явитися потрібний пристрій з ім'ям ttyUSBxxx. У мене це виявилося/dev/ttyUSB0. У вас, природно, ім'я може бути трохи іншим. Саме його і використовуватимемо при налаштуванні apcupsd. Перехід до налаштування apcupsd. Для цього у файлі/etc/apcupsd/apcupsd.confпрописуємо:UPSNAME Server-UPS # Тут даємо довільне ім'я нашому безпередойнику UPSCABLE smart UPSTYPE apcsmart DEVICE /dev/ttyUSB0 #Ім'я пристрою з'єднання з UPSCABLE
Параметри вимкнення системи в цьому файлі налаштовуємо на власний розсуд. У мене це:BATTERYLEVEL 15 MINUTES 25
Інші параметри можна залишити за замовчуванням. Перевірити доступність UPS можна командою:$apcaccess
Якщо параметри apcupsd правильні, то на виході ми повинні побачити параметри стану UPS:APC :001,049,1240 DATE : 2013-11-01 13:56:52 +0200 HOSTNAME : backup VERSION : 3.14.10 (13 September 2011) debian UPSNAME : Server-UP>CABLE : Custom Cable Smart DRIVER : APC Smart UPS (будь-який) UPSMODE : Stand Alone STARTTIME: 2013-10-30 12:45:49 +0200 MODEL : Smart-UPS SC1500 STATUS : ONLINE LINEV : 232.0 Volts
І так далі. Буде виведено кілька сторінок параметрів стану UPS'а
3. Налаштування з'єднання з ESXi Server
Вводимо свій пароль. Генеруємо RSA ключі:#ssh-keygen -t rsa
Відповідаємо на запитання: 1.Enter file in which to save the key (/root/.ssh/id_rsa):— погоджуємося на значення за промовчанням. 2.Enter passphrase (empty for no passphrase):- Залишаємо значення порожнім. Паролем користуватися не будемо. 3.Enter same passphrase again:— Знову залишаємо значення порожнім.
Скрипт створив 2 ключі: приватний та публічний.Your identification has been saved in /root/.ssh/id_rsa.- секретний приватний ключ для декодування.Your public key has been saved in /root/.ssh/id_rsa.pub.- публічний ключ для кодування.
Зверніть увагу! Навіть після цього ми не можемо зайти на сервер ESXi без пароля. Це пов'язано з тим, що в налаштуваннях ssh на ESXi прописаний параметр:AuthorizedKeysFile /etc/ssh/keys-%u/authorized_keys
І скопіюємо файл із ключами на потрібне місце
# cp /.ssh/authorized_keys /etc/ssh/keys-root/authorized_keys
Після цього ми зможемо входити без пароля із сервера Ubuntu на сервер ESXi. У корені файлової системи сервера віртуалізації (хоча це можна зробити і в будь-якому іншому каталозі) створимо скрипт вимкнення всіх віртуальних серверів і самого сервера ESXi:
І запишемо до нього:#!/bin/sh # Отримуємо ID всіх віртуалок VM ) # Переглядаємо всі віртуалки в циклі for i in $VMID do # Отримуємо їх стан (turned on, off, whatever) STATE=$(/usr/bin/vim-cmd vmsvc/power.getstate $i tail -1 awk '') # Якщо віртуалка запущена - вимкнути if [ $STATE == on ] then /usr/bin/vim-cmd vmsvc/power.shutdown $i fi done #Робимо паузу в очікуванні, поки віртуалки погаснуть sleep 180 # Тепер вимикаємо і сам сервер віртуалізації. /sbin/shutdown.sh /sbin/poweroffПісля цього не забуваємо зробити скрипт виконуваним:
# chmod +x ups_down.sh
4. Остаточне налаштування apcupsd
Залишився останній крок. Змусити apcupsd виконати скриптups_down.shна сервері ESXi. Для цього відкриваємо файл /etc/apcupsd/apccontrol, шукаємо в ньому:doshutdown) echo "UPS $ initiated Shutdown Sequence" $ $ -h now "apcupsd UPS $ initiated shutdown"
І в цьому блоці замінюємо рядок$-h now "apcupsd UPS $ initiated shutdown"
на/usr/bin/ssh root@server_ESXi /ups_down.sh
На цьому основне настроювання закінчено. При зникненні живлення коректно вимкнеться як сервер віртуалізації, і всі віртуальні сервера.