1 2 Previous Next 26 Replies Latest reply on Mar 8, 2012 1:58 AM by VTsukanov

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

    denisbaturin 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.
        • 1. Re: Автоматический запуск виртуальных машин
          aloof Novice

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

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

           

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

           

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

           

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

           

          Что я сделал:

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

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

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

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

           

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

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

          1 person found this helpful
          • 2. Re: Автоматический запуск виртуальных машин
            denisbaturin Enthusiast

            Mr.Aloof wrote:

             

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

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

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

            Mr.Aloof wrote:

             

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

             

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

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

            • 3. Re: Автоматический запуск виртуальных машин
              Shingi Novice

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

               

               

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

               

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

               

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

              • 4. Re: Автоматический запуск виртуальных машин
                mazday Expert

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

                 

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

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

                 

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

                 

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

                 

                зы

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

                • 6. Re: Автоматический запуск виртуальных машин
                  aloof Novice

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

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

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

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

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

                  • 7. Re: Автоматический запуск виртуальных машин
                    denisbaturin Enthusiast

                    Chernyavsky Dmitry wrote:

                    vApp не помогут?

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

                    • 8. Re: Автоматический запуск виртуальных машин
                      denisbaturin Enthusiast

                      Mr.Aloof wrote:

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

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

                       

                      Mr.Aloof wrote:

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

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

                      Mr.Aloof wrote:

                       

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

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

                       

                      Mr.Aloof wrote:


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

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

                      • 9. Re: Автоматический запуск виртуальных машин
                        aloof Novice

                        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% времени простаивающий...

                         

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

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

                        1 person found this helpful
                        • 10. Re: Автоматический запуск виртуальных машин в заданном порядке
                          aloof Novice

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

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

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

                          • 11. Re: Автоматический запуск виртуальных машин в заданном порядке
                            denisbaturin Enthusiast

                            Mr.Aloof wrote:

                             

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

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

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

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

                            • 12. Re: Автоматический запуск виртуальных машин в заданном порядке
                              RumataRus Master

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

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

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

                              • 13. Re: Автоматический запуск виртуальных машин в заданном порядке
                                denisbaturin Enthusiast

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

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

                                • 14. Re: Автоматический запуск виртуальных машин в заданном порядке
                                  aloof Novice

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

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

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

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

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

                                  1 2 Previous Next