Корректный shutdown виртуальных машин

Имеется

ESXi 4.1.0
vSphere 4.1.0
2 виртуальных сервера

Нужно, чтоб при отключении света выполнялось корректное выключение виртуальных серверов и хоста с ESXi

Потребуется

APC Smart-UPS
APC Network Managment Card
vMA 4.1.0

Установка

Предполагается, что сетевая карта уже установлена в ups, и имеет сетевой адрес 192.168.11.136, web-консоль управления доступна для работы и внесения изменений

Запускаем vSphere и устанавливаем vMA через File -> Deploy OVF Template. При инсталяции назначаем адрес vMA 192.168.11.130 и заходим туда ssh’ем. Так как vMA 4.1.0 на базе CentOS, то для дальнейшей установки софта удобнее указать репозитории

sudo vi /etc/yum.repos.d/centos-base.repo

и вставляем туда

[base]
name=CentOS-5 - Base
baseurl=http://mirror.centos.org/centos/5/os/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[update]
name=CentOS-5 - Updates
baseurl=http://mirror.centos.org/centos/5/updates/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[EPEL]
name=CentOS-5 - EPEL
baseurl=http://mirror.yandex.ru/epel//5/x86_64/
gpgcheck=1
gpgkey=http://mirror.yandex.ru/epel/RPM-GPG-KEY-EPEL

далее ставим apcupsd

sudo yum install apcupsd

в /etc/apcupsd/apcupsd.conf пишем

UPSCABLE ether
UPSTYPE snmp
DEVICE 192.168.11.136:161:APC:public

CommunityName указан public, тоже самое должно быть указано в настройках  snmp v1 сетевой карты ups’а. Всё остальное может быть по умолчанию. Проверить доступность можно командой

snmpwalk -v 1 -c public 192.168.11.136 system

ответ должен быть приблизительно следующий

SNMPv2-MIB::sysDescr.0 = STRING: APC Web/SNMP Management Card (MB:v4.0.1 PF:v5.1.6 PN:apc_hw05_aos_516.bin AF1:v5.1.6 AN1:apc_hw05_sumx_516.bin MN:AP9630 HR:05 SN: ZA1204020850 MD:01/21/2012) (Embedded PowerNet SNMP Agent SW v2.2 compatible)

если так, то всё в порядке и доступ есть. И запускаем apcupsd

sudo /etc/init.d/apcupsd start

Дополнительно apcaccess должен показать инфо о ups’е

Скрипт выполняющий выключение гостевых систем (виртуальные сервера + сам vMA) и хост машины (тоесть той, где установлена ESXi) берём здесь или у меня и кидаем его в /home/vi-admin. Даём права на выполнение

chmod 755 shutdownHostViaSOAPAPICall.pl

и слегка его подредактируем, заполнив username and password в переменных $host_username и $host_password.  Я указывал root esxi’я. В файле esxi-list указаваем адреса наших esxi хостов, по одному на строчку. В vSphere, в разделе Startup/Shutdown вносим в Automatic Startup все гостевые системы которые необходимо выключать, в том числе и vMA

Работа скрипта описана на сайте, в двух словах это так:

  • авторизируемся на ESXi и получаем куку
  • команда shutdown берёт куку и инициирует выключение всех ESXi хостов
  • если виртуальные машины находятся в Startup/Shutdown-Automatic Startup, то они будут выключены, после чего выключается сам ESXi

Контрольная проверка

./shutdownHostViaSOAPAPICall.pl esxi-list

Всё должно корректно выключиться. Если выключение прошло хорошо, открываем apccontrol, ищем doshutdown) и после echo ставим вышеуказанную команду с полными путями

;;
doshutdown)
echo «UPS ${2} initiated Shutdown Sequence» | ${WALL}
/home/vi-admin/shutdownHostViaSOAPAPICall.pl /home/vi-admin/esxi-list >> /home/vi-admin/esxi-shutdown.log
${SHUTDOWN} -h now «apcupsd UPS ${2} initiated shutdown»
;;

Предварительно создадим файл логов

touch /home/vi-admin/esxi-shutdown.log

Вот собственно и всё

Александр Черных
системный администратор

Статьи по теме