2010-03-25

Отключение хостов VMWare ESX/ESXi через APC PowerChute

"Данное решение помечено как DEPRECATED - перестало работать на free-версии. Вместо него предлагают использовать
http://communities.vmware.com/docs/DOC-11623" 

http://www.vm4.ru/2010/07/esx-esxi-apc.html




Чтобы избавиться от необходимости устанавливать APC PowerChute на каждую гостевую машину, можно использовать скрипт погашения хоста (с предварительным выключением виртуальных машин на нем), стартующий по команде PowerChute, установленного на отдельную виртуальную машину.

Потребуется
  1. vSphere Management Assistant (vMA) - образ нужной виртуальной машины (на данный момент v4.0, требуется зарегистрироваться на сайте VMWare)
  2. APC PowerChute Network Shutdown - «парашют», версия для Linux (на данный момент v2.2.4, требуется зарегистрироваться на сайте APC)
  3. Скрипты «ESX/ESXi APC/APCUPSD Host Shutdown VI Perl Toolkit Script»:
    upsVIShutdown.pl (1.9 K) и ghettoShutdown.pl (5.1 K)

Установка

Устанавливаем vMA на ESX/ESXi



При первом старте настраиваем сетевой интерфейс и задаем пароль пользователя vi-admin (мастер ОЧЕНЬ придирчив к сложности пароля).



Забрасываем в домашний каталог скрипты выключения и архив с «парашютом»



Делаем скрипты исполняемыми:
chmod +x upsVIShutdown.pl
chmod +x ghettoShutdown.pl

Распаковываем «парашют»:
tar -xvf pcns224Linux.tar.gz



Переименовываем файл /etc/vima-release:
sudo mv /etc/vima-release /etc/vima-rel

Запускаем инсталляцию PowerChute:
sudo ./install.sh

В процессе установки со всем соглашаемся, при вопросе какую джаву использовать (предлагается вписать путь или нажать энтер для использования встроенной в инсталлятор), не указывая пути нажимаем энтер:



В конце выведется сообщение об успешной установке и предложение продолжить конфигурацию. Запускаем конфигуратор PCNSConfig.sh:
sudo /opt/APC/PowerChute/group1/PCNSConfig.sh




Если, как и в моем случае, имеется 1 ИПБ, выбираем 1й вариант - single UPS device:



Вводим IP упса, порт, имя и пароль администратора, аутентификационную фразу:



Дожидаемся сообщения, что ИПБ не отвечает, соглашаемся сохранить конфигурацию и запустить сервис:



Зайдем в панель управления ИПБ и убедимся что клиент успешно добавился.

Отключим файрволл:
sudo chkconfig iptables off
sudo service iptables save
sudo service iptables stop

Убедимся, что открывается интерфейс по адресу https://IP:6547/login (логин:пароль - apc:apc)

Навесим на нужное событие запуск скрипта /home/vi-admin/upsVIShutdown.pl:




Изменим данный скрипт, прописав свои хосты, которые он должен гасить, и уменьшив интервал, с которым он будет гасить гостевые машины, до 2х секунд:





Последний шаг - привязываем хосты, чтобы гостевая ОС имела право их гасить:
sudo bash
ipvf addserver servername1.domainname
ipvf addserver servername2.domainname
...
ipvf addserver servernameN.domainname
vifpinit

Отвечаем Yes на вопрос о сохранении авторизационной информации:
This will store username and password in credential store which is a security risk. Do you
want to continue?(yes/no): yes

Проверяем привязку, выведя список подключенных хостов:
vifp listservers

При срабатывании, скрипт отдаст команду погасить виртуалки и хосты, прописанные в конфиге. Саму виртуалку отключать через «парашют» не обязательно.