Вы уже читали, что в VMware vSphere 5 механизм отказоустойчивости виртуальных машин VMware High Availability претерпел значительные изменения. Точнее, он не просто изменился - его полностью переписали с нуля. То есть переделали совсем, изменив логику работы, принцип действия и убрав многие из существующих ограничений. Давайте взглянем поподробнее, как теперь работает новый VMware HA с агентами Fault Domain Manager.
Сначала взглянем на общий список изменений и нововведений VMware HA:
Полностью переписанный механизм отказоустойчивости
Устранение наиболее частой проблемы - разрешение имен в DNS
Несколько каналов для коммуникации агентов. И сеть управления (management network), и сеть хранения могут быть использованы для взаимодействия агентов. Это повышает надежность и позволяет обработать большинство типов отказов.
Поддержка IPv6
Улучшение механизма решения проблем - теперь логи на хосте ESXi предоставляют более удобную и понятную информацию.
Переработан интерфейс пользователя.
Улучшен механизм развертывания агентов и настройки кластера.
Давайте взглянем на общую картину компонентов нового VMware HA:
Мы видим, что теперь на каждом хосте устанавливается агент Fault Domain Manager (FDM) механизма VMware HA (бывший AAM). В процессе настройки кластера HA один из агентов выбирается как Master, все остальные выполняют роль Slaves. Теперь больше нет primary/secondary узлов. Размер агента FDM - около 50 КБ (кстати, он теперь не зависит от службы vpxd).
Роль Master выполняет следующее:
Мониторит доступность хостов ESXi и виртуальных машин.
Отслеживает сбои на всех Slaves-хостах.
Отслеживает состояние питания защищенных виртуальных машин. В случае сбоя он их будет перезапускать.
Ведет список всех хост-серверов и виртуальных машин кластера. Исключает и добавляет их в этот список (для ВМ также при включении-выключении).
Роль Slave выполняет следующее:
Отслеживает состояние своих виртуальных машин, ведет их список и отправляет эту информацию на Master.
Осуществляет функции VM Health Monitoring (т.е. то, что не зависит от кластера HA)
Отслеживает состояние Master и, в случае его отказа, принимает участие в выборах нового Master.
В случае выхода из строя Master происходят выборы между Slaves, где выбирается новый Master. Как он выбирается? Очень просто - это хост с максимальным количеством хранилищ (если у хостов равное количество хранилищ, то выбирается просто по алфавиту, в зависимости от имени).
Выборы нового Master происходят в 3 случаях:
Вы включили VMware HA в кластере.
Master вышел из строя или переведен в Maintenance Mode.
Структура сети управления разорвалась на сегменты, в одном из которых нет Master. В этом случае будет 2 или более Master'ов в кластере.
Коммуникация между агентами FDM происходит следующим образом:
Агенты для взаимодействия используют Management Network. Все общение идет без бродкастов, только "точка-точка". Выборы Master идут по UDP. После того, как Master выбран, хосты общаются между собой по TCP с шифрованием по SSL.
Хранилища при этом также используются для коммуникации, но на случай, если management network будет разделена из-за отказов сетевого оборудования и т.п.
Master посылает конфигурацию кластера на сервер VMware vCenter, информирует Slaves об изменениях конфигурации и посылает сигналы доступности (Heartbeats) Slave-хостам кластера HA.
Сам же vCenter в первую очередь контактирует с Master для поддержки списка совместимости для хостов (на каких из них ВМ может быть запущена) и обновления состояний о виртуальных машинах. Master распространяет эту информацию дальше.
Как видно из картинки, vCenter может контактировать и со Slave-узлами для следующих целей:
Сканирование на предмет существования Master.
Если Master говорит, что он не может связаться с одним из Slaves. Тогда vCenter пытается выяснить почему.
При включении Secondary VM для Fault Tolerance.
Когда хост оповестил о том, что он изолирован или сеть разделена.
Для коммуникации используются следующие порты и протоколы:
На уровне системы хранения происходят следущие взаимодействия:
Появились так называемые "Heartbeat Datastores". Они используются только когда не работает сеть управления (Management Network).
Эти Heartbeat Datastores позволяют мастеру мониторить доступность подчиненных и определять, когда они оказываются изолированы от сети. При этом через эти хранилища происходит координация прав владения на виртуальные машины, поскольку ими может владеть только один Master, а самих мастеров может быть несколько при разделении сети. По умолчанию, в качестве этих хранилищ выбираются 2, и они могут быть определены пользователем.
Выбираются они так: во-первых, они должны быть на разных массивах, а, во-вторых, они должны быть подключены ко всем хостам.
Происходят все коммуникации через хранилища так:
В зависимости от используемого хранилища, Master читает или Heartbeat Region на томе VMFS, или Heartbeat File на томе NFS (который перодически обновляется со стороны Slave-хостов). Доступность виртуальных машин контролируется через файл, создаваемые каждым из Slave-хостов, который содержит список запущенных ВМ. Координация между Master-ами происходит за счет механизма распределенной блокировки на хранилище (мастеров может быть несколько при разделении сети).
Вот какие файлы использует VMware HA на кадом хосте в папке /etc/opt/vmware/fdm:
fdm.cfg - конфигурационный файл для Fault Domain Manager, который содержит настройки логирования, нотификаций и рабочей директории. Этот файл не надо редактировать вручную (например, для настройки уровня логирования, вместо этого используется Advanced Settings в категории DAS).
Hostlist - список хостов-членов кластера, включая имена, IP-адреса, MAC-адреса и Heartbeat Datastores.
Compatlist - матрица совместимости для виртуальных машин (на каких хостах они могут быть запущены). Этот файл сжат и его не надо редактировать вручную.
Clusterconfig - информация о настройках кластера, таких как Host Isolation Response, VM restart priority, admission control информация о DRS/DPM. Этот файл сжат и его не надо редактировать вручную.
Вот какие общие для хостов файлы использует VMware HA:
host-X-hb - heartbeat-файл для хоста, который им обновляется, и который проверяется со стороны Master в случае если хост оказался изолированным от сети управления. Для VMFS томов используется механизм распределенной блокировки с использованием механизма устаревания временных меток, а для томов NFS используется файл, в котором обновляется timestamp. Этот файл есть только на Heartbeat Datastores.
host-X-poweron - файл, который содержит список всех включенных хостов, используется для того, чтобы изолированные от Management Network хосты могли сообщить о своей изоляции. Этот файл есть только на Heartbeat Datastores.
protectedlist - список защищенных машин для каждого хранилища (лежит не на хосте, а на хранилище). Именно по этому списку будет проходить их восстановление в случае отказа Master (в случае отказа Slave - эта информация есть у мастера в памяти). Используется для всех Datastores.
Файлы protectedlist и host-X-poweron используются при выполнении действия Isolation Responce и условии разделения сети.
Перейдем к состояниям защищенности виртуальных машин.
Статус виртуальной машины "Protected" в GUI vSphere Client означает, что HA гарантирует попытку восстановления виртуальной машины в случае сбоя. Машина становится защищенной, когда vCenter оповещается мастером об этом факте. При включении машины vCenter оповещает Master о том, что она включилась, он обновляет список защищенных ВМ и сообщает об этом серверу vCenter. При выключении машины - происходит обратный процесс.
Теперь включение виртуальной машины происходит быстрее за счет того, что ей при старте не нужно дожидаться состояния protected. То есть, после старта виртуальная машина будет некоторое время оставаться unprotected, пока Master не запишет информацию на диск. Каждые 5 минут хост vCenter проверяет соответствие своего списка защищенных ВМ со списком Master и обновляет список на Master, если есть различия.
Теперь статус Master видится в свойствах хоста в vSphere Client:
HA State может быть следующим:
N/A (HA не настроен)
Election (идут выборы Master)
Master (может быть несколько)
Connected (соединен с Master, то есть он - Slave)
Network Partitioned
Network Isolated
Dead
Agent Unreachable
Initialization Error
Unconfig Error
Основные логи VMware HA хранятся в фале /var/log/fdm.log на хосте ESXi.
Приятно, что теперь все агенты FDM на хостах ставятся параллельно:
При добавлении хоста ESXi в кластер есть интеграция с механизмом VMware Auto Deploy:
При удалении хоста из кластера или отключении VMware HA происходит удаление агентов FDM и очистка служебных данных HA на хранилищах.
Давайте теперь посмотрим на примеры сбоев и их обработку в VMware HA.
Первый тип сбоя - разделение сети
В этом случае Master видит хосты через Heartbeat Datastores, но не видит хосты через сеть управления. В этом случае в каждом сегменте у нас получится два хоста Master:
В этом случае кластер продолжает нормально работать (в образовавшемся сегменте мониторинг за состоянием виртуальных машин будет проходить через хранилища), а vCenter доложит о состоянии одного из хостов Master. Когда сетевое взаимодействие наладится - один из Master'ов сложит с себя полномочия, и кластер придет в нормальное состояние.
Второй сценарий - изоляция хоста
Это случается, когда хост полностью выпадает из сети управления, не может пинговать Isolation Address, но видит хранилища (а значит не вышел из строя).
В этом случае выполняется действие Isolation Response (если оно настроено и Master может перезапустить ВМ). Если установлено значение по умолчанию (Leave Powered On), то виртуальные машины продолжают работать, при этом они находятся под наблюдением со стороны хранилищ. Если и к хранилищу пропадет доступ хоста - машины перезапустятся на других хостах кластера.
Третий сценарий - сбой FDM-агента
Случается, когда Master пингует хост, но FDM-агент на нем не отвечает. При этом vCenter также с ним соединиться не может.
Эта ситуация появится в виде алерта в vSphere Client и ничего не будет предпринято по отношению к ВМ хоста. Надо будет переустановить агент FDM.
Четвертый сценарий - полная поломка хоста
В этом случае Master не может получить сигналов доступности от хоста ни по сети управления, ни по сети хранилищ (не обновляются timestamps).
В этом случае все защищенные виртуальные машины этого хоста будут перезапущены на остальных серверах кластера.
GUI для VMware HA
Теперь давайте взглянем как это выглядит в GUI vSphere Client.
Так выглядят свойства кластера:
Ошибки конфигурации:
Хосты Master и Slaves:
Статус защищенности виртуальной машины:
Настройка Datastore Heartbeating:
Настройка Admission Control:
Скоро - еще более подробная информация о работе VMware HA. Следите за новостями.