denisbaturin
Enthusiast
Enthusiast

Автоматический запуск виртуальных машин в заданном порядке

В комментах к очень толковой статье http://www.vmgu.ru/articles/vmware-vm-autostart-fix-script началось обсуждение насущного для меня вопроса - Как автоматически запускать в заданном порядке виртуальные машины?

Подкованные товарищи скажут - пользуй Virtual  Machine Startup/Shutdown. И будут правы, если не используется кластер с Vmotion/HA. Проблема в том, что порядок запуска виртуальных машин хранится в рамках одного хоста и при переносе(перегистрации) виртуальной машины на другой хост, этот порядок теряется, и машина попадает в категорию AnyOrder. Примерно об этом вышеупомянутая статья...

В комментах Mr.Aloof предложил использовать vMA или  "легкий" Virtual Appliance "Sphere CLI", и с его помощью стартовать виртуальные машины.

Прямо в самом начале написания сркипта возникла проблема - как найти и запустить виртуальную машину vmad01 расположенную на одном из 4 хостов без явного указания пароля при условии, что vCenter еще не работает...

ЗЫЖ VMware очень не рекомендует использовать Virtual  Machine Startup/Shutdown в кластерах c HA. В документике  Availability Guide(http://www.vmware.com/pdf/vsph...) на стр 20 пишут, что лучше этой функцией в HA cluster не пользоваться.

NOTE The Virtual Machine Startup and Shutdown (automatic startup) feature is disabled for all virtual
machines residing on hosts that are in (or moved into) a VMware HA cluster. VMware recommends that you
do not manually re-enable this setting for any of the virtual machines. Doing so could interfere with the actions
of cluster features such as VMware HA or Fault Tolerance.
----- Think Twice Before Installing Something
0 Kudos
26 Replies
aloof
Contributor
Contributor

Чем не устраивает явное указание пароля в скрипте? Думаете небезопасно?

Просто не показывайте его никому, и не разглашайте пароль от "vi-admin". На сам скрипт выставить права "700"

Ну и чтоб совсем наверняка - создайте на своих esxi пользователя с разрешением только старта VM, и используйте в скрипте его 😃

По сути, этот скрипт своеобразное дополнение скрипта HA.

PS: К слову, при моделировании ситуации из статьи, у меня все ВМ стартовали. Так что я не понимаю почему у Андрея не запустились виртуалки.

Что я сделал:

1. Создал кластер HA из 2-х хостов. Включил на нем 2 тестовых виртуалки. При конфигурировании кластера, на хостах, естественно, автозапуск ВМ выключился.

2. Выключил оба хоста. Жестко. Затем включил.

3. После включения виртуальные машины запустились.

Как мне повторить то, что произошло у Андрея? 😃

В итоге, задача сводится к создании механизма очередного запуска ВМ.

Мини-опрос проведенный среди 7 знакомых показал что это никому особо не нужно...

denisbaturin
Enthusiast
Enthusiast

Mr.Aloof wrote:

Чем не устраивает явное указание пароля в скрипте? Думаете небезопасно?

Просто не показывайте его никому, и не разглашайте пароль от "vi-admin". На сам скрипт выставить права "700"

Я считаю использование пароля в открытом виде небезопасным. Но проблема даже не в безопасности, а в требовании регулярно менять пароли - четыре учетные записи, пароль поменять в пяти местах.

Mr.Aloof wrote:

PS: К слову, при моделировании ситуации из статьи, у меня все ВМ стартовали. Так что я не понимаю почему у Андрея не запустились виртуалки.

2. Выключил оба хоста. Жестко. Затем включил.

У вас отработал HA. При запуске первичного узла, он восстановил виртуальные машинки к previously known state, те запустил. А вот если вы виртуальные машинки выключите ручками или скриптом, то они естественно не запустятся.

----- Think Twice Before Installing Something
0 Kudos
Shingi
Contributor
Contributor

Mr.Aloof
Да, Вы оказались правы.После реконфигурирования кластера HA "Allow virtual machines to start and stop with the system" становится "disabled"...
Спасибо!!!
А статья, наверное, можно немного переименовать\переделать и получить хороший материал о механизме автостарта виртуальных машин:)

Вот что я еще написал в комментариях к статье. Поэтому не отрабатывал Any Order)

Но все-таки приоритетный запуск ВМ в группе хостов - это на мой взгляд необходимый функционал. В статье я именно старался уделить внимание механизму автоматического запуска ВМ. На основе этого материала можно двигаться дальше...

З.Ы. На англоязычном комьюнити, мне кажется, было бы больше ответов и обсуждения. Потому что за бугром виртуализацию от vmware использует большее число людей.

0 Kudos
mazday
Expert
Expert

Для меня вопрос автостарта машин в HA-кластере тоже актуальный. Пока вроде обхожусь повторным включением авторстарта после каждой реконфигурации HA-агентов. Но это не соответсвует рекомнедациям "стоматологов".

Вижу два варианта, которые можно обсудить.

1. Если важен только статус запуска машины, и порядок без разницы, или имеет малую важность - можно настроить тригеры  (в виртуалцентре) для каждой инфраструктурной виртуалки (или может даже папки с виртуалками).  Например если статус виртуалки выключена - то включить ее.

2. Делать скрипт (например на повершелле) который будет дергаться раз в 10 минут например (зависит от времени отработки). Скрипт проверяет статус виртуалок и запускает нужные.

В обоих вариантах еще и нотификаци иможно прикрутить.

зы

после НГ точно попробую оба варианта, как раз тут пару новых серваков должно нарисоваться Smiley Happy

0 Kudos
3apa3a_b_ta3e
Enthusiast
Enthusiast

vApp не помогут?

0 Kudos
aloof
Contributor
Contributor

во первых, проблема безопасности абсолютно надумана.

во вторых, что мешает для смены пароля использовать скрипт? как сейчас вы меняете пароли на esx?

в третьих, я прекрасно знаю как работает HA, по этому и не понимаю откуда автор статьи взял проблему. Изначально вопрос о порядке запуска не стоял.

в четвертых, есть продукт Site recovery manager, с помощью которого это можно реализовать.

ну и в пятых, если хочется "дешево и сердито", то делайте отдельный хост или виртуалку с vMA и на нем пишите скрипт, который будет монторить состояние esx и нужных виртуалок, и в случае чего запускать их в нужном порядке. В качестве пользователя, от имени которого это будет делаться, может быть юзер с правами ТОЛЬКО НА ЗАПУСК выбранных виртуалок. Можете его пароль не мнять, а можете менять в месте с остальными скриптом. даже если кто-то его узнает, максимум что он сможет сделать - получить список виртуалок и запустить их...

0 Kudos
denisbaturin
Enthusiast
Enthusiast

Chernyavsky Dmitry wrote:

vApp не помогут?

vApp без vCenter обычный resource pool. Так что не подходит.

----- Think Twice Before Installing Something
0 Kudos
denisbaturin
Enthusiast
Enthusiast

Mr.Aloof wrote:

во первых, проблема безопасности абсолютно надумана.

К сожалению, у нас в стране(да и вдругих тоже) очень много надуманного. И еще большое сожаление, вызывают департаменты информационной безопасности, считающие лучшим способом защиты напечатать и положить в сейф. Ну и верхом сожаления являются люди принимающие решение о внедрении, но не разбирающиеся ни в технологии, ни в предметной области... Предлагаю вопрос безопасности принять как аксимому и необсуждать! Тем более, что не такое уж маргинальное условие - не хранить пароли в открытом виде и переоидически их менять.

Mr.Aloof wrote:

во вторых, что мешает для смены пароля использовать скрипт? как сейчас вы меняете пароли на esx?

Скрипт использвовать можно... но много раз, потому как пароли должны быть разными! Smiley Happy

Mr.Aloof wrote:

в четвертых, есть продукт Site recovery manager, с помощью которого это можно реализовать.

Сайт рековери из другой оперы и для решения моей задачи слишком дорого(тем более, что он теперь per vm).

Mr.Aloof wrote:


ну и в пятых, если хочется "дешево и сердито", то делайте отдельный хост или виртуалку с vMA и на нем пишите скрипт

Дешево не получится - дополнительный хост почти 100% времени простаивающий...

----- Think Twice Before Installing Something
0 Kudos
aloof
Contributor
Contributor

Denis Baturin wrote:

Предлагаю вопрос безопасности принять как аксимому и необсуждать! Тем более, что не такое уж маргинальное условие - не хранить пароли в открытом виде и переоидически их менять.

Если вас больше заботят вопросы безопасности, чем вмешательство во внутренности системы, то тогда принцип такой:

1. Пишем скрипт, реализующий запуск ВМ по условиям. Его вставляем в автозапуск ESX рядом с агентом "aam".

     Для скрипта нужно указать общее хранилище, где будет лежать файл конфигурации и где будут копиться логи.

     Примерный алгоритм:

     - определить необходимость автозапуска. (Тут нужно подумать что будет сигналом. Можно просто пройтись пингом по всем ВМ). Если не нужно ничего делать (перезагрузка одного хоста), то просто выходим.

     - останавливаем агента "aam". (нам ведь не нужны конфликты со службой HA?)

     - определяем из конфигурации какие ВМ нам нужно запустить на данном хосте, и в каком порядке.

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

     - запускаем все что должно запуститься после основной очереди.

     - стартуем агента "aam"

2. Конфигурация, соответственно, должна включать следующее:

     - список ВМ для запуска, с указанием порядкового номера и целевого хоста.

     - способ реагирования на ошибки запуска ВМ (остановить очередь, игнорировать и т.п.)

     - способ реагирования на недоступность хостов (по аналогии с HA определять изолированность, распределять ВМ с недоступных хостов)

3. Пишем скрипт для переодического уточнения связки ВМ-хост (запуск по crontab).

4. Пишем плагин для vcenter для управления очередью и прочими настройками. Ну или правим конфиги вручную.

Можно реализовать несколько очередей (сложные зависимости виртуалок).

Недостатки:

1. Вмешательство в ESX противоречит лицензионному соглашению и может послужить причиной отказа в техподдержке.

2. Вмешательство в ESX противоречит условиям сертификации по НДВ (к вопросу о безопасности 😉 )

3. Усложняется переход на новые версии ESX.

Хотя, конечно можно все это хозяйство упаковать в bootbank, и закидывать его на хост плагином... Будет более-менее универсально.

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

Хотя по-моему более правильный вариант использование отдельного хоста. Возможные утечки пароля из скрипта оцените по модели угроз. Думаю при правильной настройке утечка будет слишком маловероятна. А если она и случится, то угрозы безопасности не произойдет из-за ограниченных прав доступа учетки. Также, можно использовать авторизацию ActiveDirectory, но это накладывает условие "внешнего" контроллера домена.

Denis Baturin wrote:

Дешево не получится - дополнительный хост почти 100% времени простаивающий...

Не путайте "дешево" и "эффективно" 😉

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

aloof
Contributor
Contributor

Давайте еще обсудим, действительно ли есть реальная необходимость в реализации общей очереди?

Нужно ли это решать на уровне виртуальной инфраструктуры, или лучше это решить на уровне приложений, требующих каких-либо зависимостей? :smileyconfused:

Быть может нужно изначально построить правильную структуру, не зависимую от порядка запуска ВМ, а не городить костыли? Smiley Wink

0 Kudos
denisbaturin
Enthusiast
Enthusiast

Mr.Aloof wrote:

Быть может нужно изначально построить правильную структуру, не зависимую от порядка запуска ВМ, а не городить костыли? Smiley Wink

К сожалению, костыли, а вернее не доделки это как раз aam и отдельный автостарт.

Про правильность инфраструктуры - мне нужен выделенный sql, он должен обязательно стартовать раньше vc. Если используется windows аутентификация и отключено кеширование, то перед или вместе с sql, должен стартовать dc.

Во времена до виртуализации, мы делали просто - один сервер включался автоматом по подаче электричества, остальные в правильном порядке дергались по wol.

----- Think Twice Before Installing Something
0 Kudos
RumataRus
Commander
Commander

Денис, а как по Вашему мнению, что плохого может случиться, если вопреки рекомендации VMware ("do not manually re-enable...")

все-таки устанавливать в HA-кластере для некоторых виртуальных машин порядок "any order"?

При этом допустим, порядок запуска не важен, т.е. виртуальные машины не зависят друг от друга, важен лишь их старт сам по себе.

0 Kudos
denisbaturin
Enthusiast
Enthusiast

Все просто... один раз это сработает... Но при каждом включении хоста выполняется перенастройка aam и выключается опция autostart/shutdown.

Придется кажлый раз включать ручками...

----- Think Twice Before Installing Something
0 Kudos
aloof
Contributor
Contributor

Извините что потерялся - отдыхал 😃

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

То что вам нужно - давно реализовано в технологии vApp.

vApp - это по сути контейнер для нескольких виртуалок. Если у вас есть сервера, завязанные друг к другу, то нужно их положить в один vApp и в нутри него настроить очередь запуска, и будет вам счастье...

Так что бросил я разработку плагина и скрипта на половине, и взялся за тесты vApp - все отлично работает. И бэкапить удобнее и управлять. Рекомендую...

0 Kudos
denisbaturin
Enthusiast
Enthusiast

vApp очень удобная штука, но опять же это сущность, относящаяся к vCenter. Те до запуска контроллера домена, субд и самого vcenter - vApp не работают. Без vCenter они выраждаются в обычные пулы ресурсов.

Так что, без скрипта ничего не получается... :smileyangry:

----- Think Twice Before Installing Something
0 Kudos
aloof
Contributor
Contributor

Как это не работают?

После настройки должны функционировать и без vCenter.

Ок, завтра перепроверю без vCenter...

0 Kudos
Sysxp
Enthusiast
Enthusiast

И чем в итоге всё кончилось?

Таки - на работает?..

0 Kudos
UshakovAA
Contributor
Contributor

Кто нибудь скажет  работает  или  нет автозапуск vApp без вЦентра?

0 Kudos
EGarbuzov
VMware Employee
VMware Employee

Самого понятия vApp не будет существовать без vCenter, т.ч. нет, не будет.

The vApp metadata resides in the vCenter Server's database, so a vApp can be distributed across multiple ESX/ESXi hosts. This information can be lost if the vCenter Server database is cleared or if a standalone ESX/ESXi host that contains a vApp is removed from vCenter Server.

Источник

0 Kudos