понедельник, 6 июля 2015 г.

Автоматическое выключение ESXi при пропадание питания на UPC APC


Сегодня речь пойдет о автоматическом выключении гипервизора ESXi при пропадании питания на ИБП.
Для работы данной связки нам необходим ИБП с сетевой картой. В данном конкретном случае это ИБП фирмы APC и для этих целей у APC есть продукт, который называется APC PowerChute Network Shutdown.
Со стороны ESXi в данной схеме будет участвовать виртуальная машина vSphere Management Assistant, или просто vMA.


Итак, первое, что нам нужно это установить vMA на ESXi.
1) Скачиваем и распаковываем vMA
2) Заходим в vSphere Client, жмем File -> Deploy OVF Template и выбираем скачанный .OVF файл
Принимаем лицензионное соглашение, и устанавливаем виртуальную машину.
3) Запускаем машину.
После запуска, первое что нам откроется это меню настройки сетевого интерфейса
Проходимся по всем настройкам и настраиваем интерфейсы, после того как закончили, жмем 1 (Exit this program)
4) Следующий шаг - смена стандартного пароля от пользователя vi-admin
Вводим в Old Password пароль vmware и 2 раза вводим придуманный вами пароль.
Здесь со стороны vmware есть довольно жесткие требования к сложности пароля.
Дело в том, что vMA будет "хранить" пароли доступа к гипервизору ESXi или к виртуальным машинам (зависит от настроек).
Соответственно, в ваших же интересах, чтобы пароль на vMA не был "простым".
5) После завершения установки можно зайти в консоль управления vMA по адресу https://vMA_IP:5480/ с введенными ранее логином и паролем.
Здесь можно изменить сетевые настройки, настройки часового пояса и автообновления.


Следующий этап - это настройка vMA
1) Настройки прокси:
Если у вас используется прокси сервер, то нужно отредактировать файл /etc/sysconfig/proxy следующим образом:
PROXY_ENABLED="yes"
HTTP_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
HTTPS_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
FTP_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
GOPHER_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
Подставив свои значения proxy_login, proxy_password и proxy_IP:proxy_port
2) Установка mc
sudo zypper install mc
3) Установка nano
sudo zypper install nano
4) Если вы установили данные программы, то следует перезагрузить vMA
sudo reboot


Настройка APC PowerChute Network Shutdown
1) Качаем APC PowerChute Network Shutdown for VMware ESXi
На момент написания статьи это была версия PowerChute Network Shutdown v4.0 for VMware ESXi
2) Закачиваем PowerChute «парашют» на сервер и распаковываем:
sudo wget ftp://'restrict:Kop$74!@ftp.apc.com/restricted/software/pcns/400/esxi/pcns400ESXi.tar.gz'
sudo tar -xvf pcns*.tar.gz
3) Установим «парашют»:
cd ESXi
sudo ./install_en.sh
Дальше нужно будет ответить на несколько вопросов:
Please enter the installation directory or press enter to install to the default directory (/opt/APC/PowerChute): ENTER
Are you sure you want to install PCNS to /opt/APC/PowerChute [Yes|No]? Yes
Please enter java directory if you want to use your system java (example:/usr/local/bin/jre/jre1.8.0_31) or press enter to install the bundled Java: ENTER
4) Заходим на web интерфейс PowerChute https://vMA_IP:6547
Нам предлагают выполнить несколько настроек:
1) выбираем IPv4 или IPv6 (в зависимости от версии используемого у вас протокола)
2) Standalone VMware Host.
3) Host Protocol - https
4) Host Address - ip адрес гипервизора ESXi
5) Здесь нужно задать логин и пароль администратора гипервизора ESXi. Это нужно для того, чтобы программа установки прописала необходимые параметры в самом гипервизоре:
   Host Username - root
   Host Password - root_password
6) Выбираем сколько UPC используется для питания сервера ESXi (в моем случае 1)
   Please select your UPS configuration - Single (Если у ваш сервер запитан от 1 UPS)
7) На вкладке PowerChute Setup: UPS Details
   Вводим IP Address ИБП
8) Do not turn off the UPS - если не хотите, чтобы PowerChute выключал сам ИБП после того как отработает сценарий
После чего можно подключаться на web-интерфейс PowerChute https://vMA_IP:6547


Теперь нам нужен скрипт отключения ESXi гипервизора
1) Будем пользоваться shutdownHostViaSOAPAPICall.pl, скачать можно от сюда
Переходим в режим root пользователя:
sudo su
Переходим в домашнюю директорию, качаем скрипт и переименовываем его для удобства:
cd /home/vi-admin
wget https://communities.vmware.com/servlet/JiveServlet/download/11623-3-32693/shutdownHostViaSOAPAPICall.pl
mv shutdownHostViaSOAPAPICall.pl shutdown.pl
Теперь нам нужно изменить логин и пароль доступа к гипервизору ESXi в файле shutdown.pl:
my $host_username = 'root';
my $host_password = 'root_ESXi_pswrd';
2) Дополнительно нам нужен файл, где будет написан ip нашего гипервизора, и файл лога - куда мы будем записывать события, связанные с запуском данного скрипта. Создаем фай лога:
touch /var/log/apc_esxi_shutdown.log
Создаем файл с ip гипервизора:
touch /home/vi-admin/hosts
Добавляем ip нашего гипервизора в файл /home/vi-admin/hosts
echo "IP_ESXi" >> /home/vi-admin/hosts
Заменив IP_ESXi на ip вашего ESXi
3) Теперь нам нужно поправить скачанный ранее shutdown.pl, т.к. в оригинале он отказывается работать и выводит ошибку:
 <html>
 <head><title>An Error Occurred</title></head>
 <body>
 <h1>An Error Occurred</h1>
 <p>500 Can't connect to IP_ESXi:443 (certificate verify failed)</p>
 </body>
 </html>
 Failed to issue shutdown command to IP_ESXi
Для того чтобы этого не было, добавим 1 строчку в shutdown.pl
sudo vi /home/vi-admin/shutdown.pl
перед строкой
use strict;
нужно добавить строку
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
и сохранить файл (esc -> :wq). Таким образом начало файла должно выглядеть вот так:
4) Ну и последнее, что нам нужно, это дополнительный файл, который будет запускать PowerChute при пропадании питания на UPS.
sudo vi /home/vi-admin/shutdown_esxi.pl
со следующим содержанием:
#!/bin/sh
echo Shuting down all virtual mashines and ESXi Server
/home/vi-admin/shutdown.pl /home/vi-admin/hosts >> /var/log/apc_esxi_shutdown.log
5) Не забываем про права запуска и владельца файла:
sudo chmod 755 /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl /home/vi-admin/hosts
sudo chmod +x /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl
sudo chown vi-admin:root /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl /home/vi-admin/hosts /var/log/apc_esxi_shutdown.log


Так, теперь заходим на web интерфейс PowerChute https://vMA_IP:6547 и подключаем скрипт:
Configure Events - UPS On Battery - Command file
Ставим галку напротив Enable Command File
Выставляем Delay 20 seconds (если в течении этого времени питание вернется - скрипт отработан не будет)
Full path to command file - путь до нашего скрипта: /home/vi-admin/shutdown_esxi.pl
Применяем настройки


Ну и последнее, что нам нужно это в настройках гипервизора выставить очередность запуска и выключения виртуальных машин:
В Данном порядке они будут включаться, в обратном выключаться.
В поле Shutdown action лучше выбрать Guest shutdown, что аналогично "Пуск - Завершение работы" у windows, в отличии от Power Off, который аналогичен нажатию кнопки выключения питания на системном блоке:

Вот собственно и все, теперь если питание пропадет на 20 секунд, гипервизор получит сигнал выключения и произойдет поочередное выключение машин, а после и самого гипервизора.

2 комментария:

  1. Большое спасибо за разъяснение всех пунктов настройки!! +100

    ОтветитьУдалить
  2. Скрипты pl не доступны для скачивания, поделитесь рабочей ссылкой на файлы. Спасибо

    ОтветитьУдалить