Как вы знаете, не так давно компания VMware выпустила обновление платформы виртуализации vSphere 6.5, где появилась масса новых возможностей, среди которых были также и улучшения механизма обеспечения высокой доступности VMware HA.
На днях появилось интересное видео, подробно объясняющее, в чем именно они заключаются:
Во-первых, приоритет рестарта виртуальных машин был расширен - вместо трех уровней (Low, Medium и High) появилось пять (добавились Lowest и Highest). Это позволит увеличить гранулярность приоритета запуска виртуальных машин при сбое, которой, видимо, хватало не всем:
Во-вторых, появились возможности восстановления виртуальных машин с учетом связи сервисов в ВМ между собой. Теперь VMware HA позволяет учитывать взаимосвязи сервисов в виртуальных машинах при их рестарте в случае сбоя на основе заданных правил зависимостей VM-to-VM по приоритетам восстановления.
Например, в VM1 у нас размещена база данных, в VM2 и VM3 - серверы приложений с зависимостью, а в VM4 - балансировщик, который должен подняться в последнюю очередь, чтобы цепочка сервисов за ним способна была предоставлять услуги пользователям.
Посмотрите на картинку - для такой конфигурации, если первый хост-сервер выйдет из строя, то VM2 запустится только после того, как будет запущена VM1, что обеспечит работоспособность сервиса и не навредит приложениям.
А вот если выйдет из строя третий хост ESXi - то VM5 и VM7 могут запуститься одновременно, согласно правилу во второй строчке (VM5<-VM6<-VM7<-VM8), так как для VM5 нет предварительного условия старта, а для VM7 условие старта выполнено - машина VM6 работает. Поэтому в данном случае добавляется еще одно правило VM5<-VM7. Имейте это в виду при планировании виртуальной инфраструктуры и кластеров HA.
Настраиваются такие правила довольно просто. Сначала в интерфейсе настройки VMware HA мы создаем несколько групп VM/Host Group, в каждую из которых добавляем только по одной виртуальной машине:
А далее устанавливаем правила (VM/Host Rules) типа "Virtual Machines to Virtual Machines" для данных групп, где определяем, какую ВМ нужно запускать сначала, а какую вслед за ней.
Определив нужный набор этих правил, мы можем реализовать любую конфигурацию последовательности перезапуска виртуальных машин в случае сбоя, в зависимости от условий рестарта/работоспособности зависимых сервисов.