Я отправляю несколько серверов ESXi 5.1 в удаленные офисы, где они будут получать питание от APC UPS.
Я хотел бы, чтобы ИБП запускал отключение подключенного сервера - тогда я бы полагался на конфигурацию ESXi, чтобы позаботиться об отключении / приостановке виртуальных машин, размещенных на нем.
Я вижу, что у APC есть решение задокументировано с помощью их PowerChute Network Shutdown, но это предполагает установку дополнительного сервера в каждом офисе и требует сетевых карт на каждом ИБП. Как правило, мы используем ИБП без сетевой карты (например, Back-UPS Pro) - они поставляются с разъемом USB и легко доступны в местах, где находятся наши офисы.
Как я могу подключить ИБП к хосту ESXi через USB, чтобы ESXi обнаружил отключение электроэнергии и затем действовал соответствующим образом? Кому-нибудь удалось это сделать.
Да, это возможно. Вот подробности моей подобной установки.
Конфигурация оборудования: APC Smart-UPS 1500 подключен к хосту ESXi 5.1 через USB. Виртуальная машина Linux, работающая на этом хосте ESXi. ИБП подключен к этой виртуальной машине с помощью опции ESXi USB pass through.
Конфигурация программного обеспечения: Главный NUT (Network UPS Tools), работающий на виртуальной машине, и собственный подчиненный сервер ESXi NUT, работающий на хосте ESXi.
Логика выключения: ВМ работает с драйвером ИБП usbhid-ups который отвечает за связь с ИБП через USB. В upsd процесс подключается к ИБП через драйвер usbhid-ups и контролирует состояние ИБП. В апсмон главный процесс, запущенный на том же компьютере, подключается к upsd и инициирует выключение. На хосте ESXi запущен второй экземпляр апсмон который также подключается к той же виртуальной машине upsd через внутреннюю сеть.
При сбое питания происходит следующая последовательность:
Загрузки:
NUT для Linux можно установить из пакета.
Встроенный клиент NUT для сервера ESXi можно скачать по последней ссылке на этой странице: http://www.networkupstools.org/download.html
Некоторые мои скрипты и файлы conf находятся здесь (показаны только измененные строки): http://pastebin.com/KkEeanK1
Ноты:
Конечно, есть более подробные сведения, и мне потребовалось время, чтобы все заработало так, как должно. Но теперь он работает очень хорошо. Эта система учитывает случаи, когда вы просто выключаете мониторинговую виртуальную машину изнутри (сценарий vmware-tools не запускается), или если это инициированное хостом ESXi завершение работы виртуальной машины (нет флага / etc / killpower, поэтому нагрузка на ИБП не отключается), или если это выключение ESXi (то же самое). Единственное, что важно - запустить эту виртуальную машину как можно скорее после загрузки хоста и выключить ее в последнюю очередь (так что время простоя хоста предсказуемо - как сказано выше, для меня это около 1 минуты и еще 2 минуты я резервирую на всякий случай).
Моя виртуальная машина Linux для мониторинга ИБП также является сервером совместного использования Samba / NFS для резервного хранилища, сервером NAT / DHCP для виртуальных машин и некоторыми другими легковесными службами. Он занимает около 22 МГц общих ресурсов ЦП ESXi и около 10 МБ активной оперативной памяти в режиме ожидания. Благодаря использованию NUT вы можете при необходимости питать больше устройств от одного и того же ИБП, и все они могут быть корректно отключены. Никаких PowerChute и / или дорогих карт сетевого монитора не требуется.
Супер вопрос. На самом деле это можно сделать довольно хорошо - по крайней мере, на некоторых настройках. Я пробовал следующий рецепт на нескольких хостах ESXi 5.5. По сути, решение выглядит так:
ctrl urb status -62
в dmesg
, скорее всего, физический контроллер не совпадает с контроллером в вашей виртуальной машине. Если совпадают - ну тогда проблема. У меня есть одна установка с такой проблемой и нет реального решения для нее.apcupsd
на виртуальной машине Linux - в Ubuntu вы можете sudo apt-get install apcupsd
установить последнюю версию. Проект NUT тоже хорош, но я традиционалист.sudo apt-get install putty-tools
plink root@<your ESXi host IP>
. Вы можете немедленно закрыть соединение. Цель состоит в том, чтобы сохранить ключ хоста, чтобы plink не запрашивал его снова, когда мы запускаем его через скрипт./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
/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"
;;
sudo service apcupsd restart
и посмотрите, работает ли что-то, вызвав apcaccess
. Если нет, проверьте логи и dmesgvCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown
). Убедитесь, что действие выключения - выключение гостевой ОС.Как только вы запустите эти вещи, doshutdown
скриптлет из шага 8 вызывается при сбое питания. Это, в свою очередь, вызывает сценарий shutdown.sh на хосте ESXi, который сигнализирует пакету VMWare Tools в каждой виртуальной машине на вашем хосте выполнить полное завершение работы через гостевую ОС. По моему опыту, он работает лучше, чем программа PowerChute от APC.
Если вам нравится контролировать вещи с ваших виртуальных машин, вы можете настроить на них подчиненные экземпляры apcupsd, которые подключаются к главной виртуальной машине Linux, управляющей ИБП. В ваших подчиненных файлах apcupsd.conf должна быть такая запись:
UPSTYPE net < your UPS control VM IP >:3551
Записи вроде UPSCABLE
и это не имеет значения в данном случае. Это работает с версией Windows apcupsd
(доступный Вот) также. Вы можете использовать включенный apctray.exe
чтобы проверить текущее состояние вещей.
Думаю, это в значительной степени покрывает это.
Согласно APC, это невозможно, и вам необходимо выключить Powerchute Network. Мы пробовали это несколько раз с USB и не нашли решения.
VMWare Здесь вы найдете информацию об использовании одобренного APC решения.
Также можно подумать, что SmartUPS будет лучшим выбором, и вы можете установить его с сетевой картой. Естественно, больше денег, но если ваши серверы вообще важны, эта цена того стоит. Также дает вам больше возможностей для мониторинга и предупреждений, которые могут быть полезны на удаленном сайте. Вам также необходимо обеспечить достаточное время выполнения для всех виртуальных машин, чтобы полностью завершить работу, а затем выключить хост.
Вы можете рассмотреть возможность использования Функция сквозной передачи USB-устройств гостю, на котором запущен PowerChute или другое программное обеспечение, способное отслеживать состояние ИБП и запускать отключение на хосте ESXi (например, apcupsd). ESXi официально поддерживает только очень ограниченное количество USB-устройств для сквозной передачи, но люди уже какое-то время подключают и передают через разные классы устройств с переменным успехом, но APC UPS USB, похоже, работает в соответствии с это пошаговое руководство для виртуальной машины Windows или это для виртуальной машины CentOS Linux.
Взгляните на vSphere Management Assistant (vMA) из Вот Мы используем его в моем офисе для выполнения ваших задач, но со Smart-UPS, подключенным через USB, а не через Back-UPS.
Хотя это возможно (вероятно / обычно), я не думаю, что автоматическое выключение компьютера от батареи - хорошая идея. Если вы собираетесь это сделать, то для большинства практических целей вам, вероятно, следует просто сэкономить деньги на ИБП с резервным питанием и позволить отключению питания вашей машины за вас. (Конечно, чистое выключение всегда предпочтительнее потери мощности, но вы, кажется, упускаете момент, когда время работы от батареи превышает пару минут, если вы автоматически выключаете все, когда вы теряете питание. )
Я всегда с этим справлялся, чтобы мониторинг предупреждал SA при отключении питания, чтобы SA могли использовать свое серое вещество, чтобы решить, когда (или даже если) выключить серверы. Если это кратковременный сбой, отключение серверов может быть не очень хорошей идеей, или вы можете оставить некоторые серверы работающими как можно дольше и отключать их только до того, как батарея вот-вот разрядится. Мне действительно кажется, что задача принятия решений лучше подходит для человека, чем простое правило.
В былые времена установки без покрытия, 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 к выделенной виртуальной машине, подход сетевого демона или то, что я делаю; не настраивается ни автоматическое отключение, ни отключение батареи ...
Конечно, я обычно использую ИБП, который может поддерживать системную нагрузку в течение часа или более, но длительные перебои в работе БЫвают. Возможно, в качестве альтернативы можно собрать несколько недорогих или отремонтированных сетевых карт и как минимум запланировать покупку устройств SmartUPS ...
Посмотрите следующую ссылку. Не самое элегантное решение, но очень практичное, очень простое решение. Возможны недостатки с точки зрения безопасности (в зависимости от вашей конкретной конструкции сети, гостей, загруженных на хосты, и доступа пользователей к этим гостям, но вы можете сделать этот вызов.
Я использовал решение MrMajestyk и только изменил доступ ssh через plink с доступом ssh без пароля, используя открытый ключ rsa. Ключ rsa, сгенерированный на виртуальной машине apcupsd, должен быть включен в / etc / ssh / keys-root / authorized_keys на хосте vmware.