Выключение VMware ESXi запускается ИБП APC, подключенным через USB

18

Я отправляю несколько серверов ESXi 5.1 в удаленные офисы, где они будут получать питание от ИБП APC.

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

Я вижу, что у APC есть решение, задокументированное с использованием их PowerChute Network Shutdown , но это включает в себя настройку дополнительного сервера для каждого офиса и требует сетевых карт на каждом ИБП. Обычно мы используем ИБП без сетевой карты (например, Back-UPS Pro) - они поставляются с разъемом USB, и они легко доступны в местах, где находятся наши офисы.

Как я могу подключить ИБП к хосту ESXi через USB, чтобы ESXi обнаружил перебои в питании и затем действовал соответствующим образом? Кому-нибудь удалось это сделать.

dunxd
источник
1
Вы рассчитали время завершения работы виртуальной машины через отключение хоста? Может ли батарея продержаться достаточно долго в течение этого периода?
ewwhite
Спасибо за указание на это. Пока нет - на данном этапе я просто отправляю серверы ESXi для запуска контроллера домена, но я уверен, что, как только у нас появится ресурс, мы добавим еще несколько серверов, и в этот момент время может измениться.
dunxd
Политика выключения довольно длинная по умолчанию. Но, честно говоря, я не запускаю выключение ИБП на своих хостах или кластерах ESXi. Кажется нелогичным, но никогда не было проблемой.
13
Зачем вообще беспокоиться о наличии ИБП на хостах ESXi? Если питание отключается из-за сбоя или из-за разрядки аккумулятора, вы получите тот же результат.
dunxd
Чтобы выдержать кратковременные отключения. Но на моих крупных площадках у меня есть 2-4 часа работы от ИБП для кластера VMWare, хранилища и сетей.
ewwhite

Ответы:

5

Согласно APC, это невозможно, и вам требуется отключение Powerchute Network. Мы пробовали это несколько раз с USB и не нашли решения.

VMWare имеет здесь информацию об использовании одобренного APC решения.

Также можно подумать, что SmartUPS будет лучшим выбором, и вы сможете использовать его с сетевой картой. Естественно, больше денег, но если ваши серверы вообще важны, эта стоимость должна стоить того. Также дает вам больше мониторинга и оповещений, которые могут быть полезны на удаленном сайте. Вам также необходимо обеспечить достаточное время выполнения для всех виртуальных машин для корректного выключения, а затем выключения хоста.

Дейв М
источник
1
Это кажется самым разумным ответом, поддерживаемым обоими поставщиками. К сожалению, VMware не думала встроить что-либо в ESX / ESXi, которое делает это изначально. Сетевое решение требует, чтобы по крайней мере один сетевой коммутатор питался также от ИБП.
dunxd
2
Не имеет смысла не подключать сетевые коммутаторы через ИБП ... они потребляют очень мало энергии и имеют решающее значение для любой сетевой операции.
Массимо
21

Да, это возможно. Вот подробности моей аналогичной установки.

Конфигурация оборудования: APC Smart-UPS 1500 подключен к хосту ESXi 5.1 через USB. Виртуальная машина Linux, работающая на этом хосте ESXi. ИБП подключен к этой виртуальной машине с помощью опции сквозного подключения ESXi USB.

Конфигурация программного обеспечения: мастер NUT (Network UPS Tools), работающий на виртуальной машине, и собственный ведомый NUT ESXi, работающий на хосте ESXi.

Логика выключения: VM запускает драйверы ИБП, которые отвечают за связь с ИБП через USB. Процесс upsd подключается к ИБП через драйвер usbhid-ups и отслеживает состояние ИБП. Главный процесс upsmon, запущенный на той же машине, подключается к upsd и инициирует завершение работы. На хосте ESXi запущен второй экземпляр upsmon, который также подключается к той же виртуальной машине upsd через внутреннюю сеть.

При сбое питания происходит следующая последовательность:

  1. UPS через usbhid-ups сообщает upsd о сбое питания.
  2. (необязательно, полезно, если вы хотите выключить через несколько минут вместо низкого заряда батареи) upsmon на виртуальной машине запускает 5-минутный таймер с повышением скорости Таймер отменяется, если питание восстановлено.
  3. Когда срабатывает таймер или когда ИБП сообщает о низком заряде батареи, upsmon поднимает флаг FSD (принудительное отключение) до upsd.
  4. В автономной конфигурации NUT флаг FSD отключит машину. Но здесь команда shutdown заменяется простой регистрацией, такой как «Я должен завершить работу сейчас, но вместо этого я жду хоста». И ничего не делает.
  5. Флаг FSD также считывается приложением ESXi upsmon, которое инициирует отключение хоста ESXi.
  6. Хост ESXi отключает все виртуальные машины одну за другой. Важно то, что виртуальная машина, которая запускает upsd, должна быть отключена последней (используя конфигурацию последовательности запуска / выключения ESXi).
  7. Важно: на этой виртуальной машине должны быть установлены инструменты VMware. Когда он получает команду гостевого выключения от хоста, запускается скрипт выключения vmware-tools. Этот скрипт проверяет наличие флага / etc / killpower . Если флажок отсутствует, он ничего не делает (это означает, что пользователь отключил linux, а не событие ИБП). Но если флаг существует (FSD активен), то этот сценарий отправляет ИБП команду отложенного отключения питания (скажем, через 3 минуты).
  8. После запуска скрипта vmware-tools гостевая виртуальная машина отключается.
  9. ESXi видит последнее состояние выключения виртуальной машины и отключается (это занимает около 1 минуты, потому что другие машины сейчас не работают).
  10. Через 2 оставшиеся минуты ИБП отключает питание.
  11. Когда питание восстанавливается, ESXi запускается и включает все виртуальные машины. Сначала необходимо запустить ИБП (та же конфигурация, что и при отключении).

Загрузки:

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 и / или дорогая карта сетевого монитора.

Олег Семенов
источник
14

Супер вопрос. На самом деле это можно сделать довольно хорошо - по крайней мере, на некоторых установках. Я попробовал следующий рецепт на нескольких хостах ESXi 5.5. По сути, решение выглядит так:

  1. Включите SSH-доступ на вашем хосте ESXi
  2. Создайте виртуальную машину Linux - я использую Ubuntu. Вам нужна только минимальная настройка - без графического интерфейса или чего-либо еще.
  3. Подключите устройство APC через USB к хосту ESXi и передайте его на виртуальную машину Linux.
    • Убедитесь, что контроллер USB, который вы добавляете в виртуальную машину, соответствует фактическому физическому контроллеру USB, к которому подключено устройство APC, т. Е. Добавьте контроллер XHCI, только если физическое устройство является устройством USB3. Несоответствия, кажется, вызывают странные проблемы в драйвере USB-устройства Linux.
    • Если что-то не работает, и вы видите ошибки, как ctrl urb status -62в dmesg, скорее всего, физический контроллер не совпадает с контроллером в вашей виртуальной машине. Если они совпадают - тогда это проблема. У меня есть одна установка с такой проблемой и нет реального решения.
  4. Установите apcupsdна Linux VM - в Ubuntu вы можете сделать, sudo apt-get install apcupsdчтобы установить последнюю версию. Проект NUT тоже хорош, но я традиционалист.
  5. Установите утилиту plink, выполнив sudo apt-get install putty-tools
  6. Подключитесь к вашему хосту ESXI, выполнив plink root@<your ESXi host IP>. Вы можете немедленно закрыть соединение. Цель состоит в том, чтобы сохранить ключ хоста, чтобы plink не запрашивал его снова, когда мы запускаем его через скрипт
  7. Редактировать /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
  8. Отредактируйте /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" ;;
  9. Перезапустите apcupsd с помощью sudo service apcupsd restartи посмотрите, все ли работает, вызвав apcaccess. Если нет, проверьте логи и dmesg
  10. Убедитесь, что на всех виртуальных машинах, которые необходимо правильно отключить в случае сбоя питания, установлены VMWare Tools. Также убедитесь, что они являются частью списка запуска / выключения виртуальной машины (в vSphere Web Client перейдите по адресу:) vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown. Убедитесь, что действие завершение работы заключается в выключении гостевой ОС.

Как только вы запустите все это, doshutdownскриптлет из шага 8 будет вызван при сбое питания. В этом случае вызывается сценарий shutdown.sh на хосте ESXi, который сигнализирует пакету инструментов VMWare в каждой виртуальной машине на вашем хосте о необходимости полного отключения через гостевую ОС. По моему опыту, он работает лучше, чем программное обеспечение PowerChute от APC.

Если вы хотите отслеживать вещи с ваших виртуальных машин, вы можете настроить на них экземпляры ведомого apcupsd, которые подключаются к основной виртуальной машине Linux управления ИБП. Ваши ведомые файлы apcupsd.conf должны иметь такую ​​запись:
UPSTYPE net < your UPS control VM IP >:3551
Записи, подобные UPSCABLEи такие, не имеют значения в этом случае. Это работает и с версией Windows apcupsd(доступна здесь ). Вы можете использовать включенный, apctray.exeчтобы проверить текущее состояние вещей.

Это в значительной степени покрывает это, я думаю.

MrMajestyk
источник
+1 работал как шарм. Первый раз!
Мортен Кристенсен
Этот ответ сработал отлично, хотя в офисе моего клиента нам пришлось немного изменить doshutdownпоследовательность. Мы добавили ${APCUPSD} --killpowerпрямо перед /usr/bin/plinkдеталью, чтобы ИБП отключился через некоторое время и автоматически перезапустился, когда питание вернется. Также стоит отметить, что шаг 6 должен быть выполнен как rootприобретенный через suили sudo su, но не так sudo -s .
Андреа
4

Возможно, вы захотите использовать функцию сквозного подключения USB-устройства к гостю, на котором запущен PowerChute или другое программное обеспечение, способное контролировать состояние ИБП и способное инициировать отключение на хосте ESXi (например, apcupsd ). ESXi официально поддерживает только очень ограниченное количество USB-устройств для сквозного прохождения, но люди уже с переменным успехом подключают и проходят через разные классы устройств, но USB-APC UPS, кажется, работает в соответствии с этим пошаговым описанием для виртуальной машины Windows или этот для CentOS Linux VM .

заместитель Wabbit
источник
2

Посмотрите на vSphere Management Assistant (vMA) отсюда. Мы используем его в моем офисе, чтобы делать то, что вы пытаетесь, однако с Smart-UPS, подключенным через USB, а не Back-UPS.

deveneyi
источник
Пожалуйста, добавьте больше подробностей, поскольку это недокументированная установка для APC или vmware.
Данксд
1

Хотя это возможно (возможно / в целом), я не думаю, что автоматическое отключение компьютера от батареи является хорошей идеей. Если вы собираетесь это сделать, то для большинства практических целей и задач вам, вероятно, следует просто сэкономить деньги на ИБП с батарейным питанием и позволить потере мощности отключить вашу машину для вас. (Конечно, чистое отключение всегда предпочтительнее потери питания, но вы, похоже, упускаете момент, когда время работы от батареи превышает пару минут, если вы автоматически выключаете все, когда теряете подачу питания. )

Я всегда обращался с этим с помощью мониторинга оповещений SA при отключении питания, чтобы SA могли использовать свое серое вещество, чтобы решить, когда (или даже если) отключить серверы. Если это кратковременное отключение, возможно, не стоит вообще отключать серверы, или вы можете оставить некоторые серверы включенными и работать как можно дольше, и отключать их только до того, как батарея вот-вот разрядится. Мне действительно кажется, что задача принятия решений лучше подходит человеку, чем простому правилу.

HopelessN00b
источник
Вам не нужно настраивать ИБП для немедленного отключения, но вы хотите, чтобы он отключился до полного разряда батарей, иначе вам придется покупать больше батарей, особенно в некоторых местах, где я работаю, и питание отключается. ежедневно. Конечно, здорово вовлечь человека, но у вас не всегда есть системный администратор в удаленном офисе.
dunxd
@dunxd Хороший вопрос - я больше привык к средам высокой доступности, где, по крайней мере, некоторые серверы должны оставаться на ногах, черт возьми или в разгаре, поэтому в названии игры выясняется, как добиться оптимального соотношения мощности (выборочное отключение отключение устройств), чтобы создать наименьшее возможное влияние на обслуживание, которое не будет в центре внимания или использования.
HopelessN00b
1

В старые времена установки без использования металла 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 как минимум ...

ewwhite
источник
0

Проверьте следующую ссылку . Не самое элегантное решение, но очень практичное, очень простое решение. Возможны недостатки с точки зрения безопасности (в зависимости от вашей конкретной конструкции сети, гостей, загруженных на хосты, и доступа пользователей к этим гостям, но вы можете сделать этот звонок.

user207685
источник
0

Я использовал решение MrMajestyk и изменил ssh-доступ только через plink с ssh-доступом без пароля, используя открытый ключ rsa. Ключ rsa, сгенерированный в виртуальной машине apcupsd, должен быть включен в / etc / ssh / keys-root / authorized_keys хоста vmware.

Норберто Альталеф
источник