В первой части статьи мы уже рассматривали наиболее оптимальную конфигурацию средства VMware vSphere Storage Appliance для создания отказоустойчивого кластера хранилищ из трех хостов и описали, что происходит с хранилищами при отказе сети синхронизации (Back-End Network). Во второй части статьи мы расскажем о том, как конфигурация VSA отрабатывает отказ сети управления и экспорта NFS-хранилищ (Front-End).
VSA Front-End Network выполняет 2 основные функции - это экспорт общих NFS-хранилищ для других хост-серверов ESXi (чтобы работали HA, vMotion и т.п.), а также через эту сеть осуществляется управление виртуальными модулями VSA.
Как мы видим, в данной конфигурации VSA Front-End подключена по одному активному пути через vSwitch0 к физическому адаптеру vmnic2 вместе с сетью управления Management Network. Это сеть, по которой, в том числе, проходят сигналы доступности Heartbeats для кластера VMware HA. Пассивный путь для VSA Front-End лежит через адаптер vmnic0.
Давайте теперь отключим аплинк vmnic0 на хосте ESXi:
В этом случае у нас ничего не сломается, а трафик портгруппы виртуальных машин пойдет через резервный адаптер vmnic2. Сеть Front-End Network для виртуального модуля VSA также продолжит свою работу по сохранившемуся активному пути.
Все будет интереснее, если мы отключим аплинк vmnic2. После его отключения у виртуального коммутатора vSwitch0 активных аплинков больше не останется. Это значит, что пропадают все три прикрепленные к нему сети: VM Network, VSA Front-End и Management Network.
Все это приводит к том, что HA-агент этого хоста (или FDM-агент, как больше нравится) уже не может связаться с другими хостами ESXi и их агентами, что в vSphere Client будет выглядеть так:
Поскольку коммуникация хоста ESXi через vpx-агент также происходит по Management Network - то хост становится в vCenter как Disconnected.
Поскольку Back-End сеть (синхронизации) по-прежнему доступна, то кластер VSA не будет предпринимать никаких действий в этом случае, он продолжит экспорт хранилищ NFS от виртуальных модулей.
И так как Back-End сеть доступна, то если мы заглянем в управление VSA, мы увидим, что все три хранилища и их реплики помечены как "Online", то есть с ними будто бы ничего не произошло.
Но поскольку Front-End сеть больше недоступна, то хост ESXi 5 больше не может презентовать свои NFS-хранилища другим хостам, которые исполняли свои машины с его хранилищ.
А значит они теряют доступ к его хранилищу, и оно помечается как Inactive:
Что происходит с виртуальными машинами, которые использовали хранилище этого хоста с других хостов с точки зрения HA? В этом случае HA к ним не предпримет никаких действий, поскольку они исполняются на других хостах.
В свойствах таких виртуальных машин мы увидим, что их хранилище также Inactive:
Теперь самое интересное. Какие у нас могут быть варианты поведения виртуальных машин:
Машины, которые исполнялись на испытуемом хосте, но находились на хранилищах других хостов. Они продолжат свою работу, поскольку вычислительные ресурсы хоста в порядке, и он имеет доступ к хранилищам по сети Back-End, которая работает. А раз их хранилища в порядке, диски залочены и переключения VSA не произошло (см. выше), то VMware HA к ним действий восстановления предпринять не сможет.
Машины, которые исполнялись на испытуемом хосте и находились на его хранилище. Поскольку VSA не предпринимает действий, то она продолжает исполняться, имеет доступ к хранилищу (оно для нее локальное), то все продолжит работать. VMware HA такой машине тоже ничего сделать не сможет.
Машины, которые исполнялись на других хостах, но имели доступ к хранилищу испытуемого хоста. Вот они как раз потеряют доступ к хранилищу (как описано выше), но продолжат "исполняться" на этом хосте, однако их I/O-запросы естественно не получат доступа к диску. В этом случае она "заморозится" с точки зрения ввода-вывода (то есть, будет бесконечно повторять I/O-запросы), пока сеть Front-End не восстановится.
Теперь если мы снова включим адаптеры vmnic0 и vmnic2:
То виртуальная машина снова продолжит свою работу:
Вот такая нехитрая штука. И такая вполне себе грамотная обработка отказа Front-End сети.