Многим пользователям платформы виртуализации VMware vSphere известна компания StarWind, которая производит продукт StarWind Enterprise для создания отказоустойчивых хранищ под серверы VMware ESX (описание работы - здесь, изданий - здесь). Основная фишка данного продукта - использование двухузлового кластера, работающего в режиме Active-Passive или Active-Active, который в случае падения одного из узлов продолжает свою работу, а виртуальные машины не теряют данных. Эта вещь актуальна для организаций, которую используют существующую инфраструктуру Ethernet для создания сети хранения на базе технологии iSCSI. То есть для тех, кто не любит тратить деньги направо и налево, покупая Fibre Channel системы хранения.
По заявкам наших читателей мы публикуем объяснение работы кластера StarWind Enterprise в случае обрыва канала синхронизации между узлами (так называемый сценарий Split Brain). В актуальной версии StarWind Enterprise 5.4 при обрыве канала синхронизации между узлами обе ноды оставались работающими, думая что каждая из них - выживший член кластера.
В этом случае, например, при алгоритме балансировки Round Robin (или при переключении пути после разрыва канала синхронизации) могла выйти ситуация, когда данные писались то на одну ноду, то на другую (а данные между ними не синхронизировались). Соответственно, при попытке что-нибудь прочитать - мы получали Blue Screen в гостевой ОС. Поэтому настоятельно рекомендовалось использовать дублирование канала синхронизации (NIC Teaming).
В версии StarWind Enteprise 5.5 которая у меня уже есть на руках (и вы можете ее у меня попросить), а у вас будет совсем скоро, ситуация кардинально лучше. Теперь механизм работы кластера StarWind HA следующий:
Когда ноды работают в режиме Active-Active, между ними все равно есть распределение ролей - Primary и Secondary.
Если обрывается канал синхронизации между узлами (нет пинга), то:
По каналу Heartbeat (сеть iSCSI трафика) первичный узел посылает запрос вторичному узлу на то, жив ли он (обычный ping). Если он жив, то первичный узел посылает вторичному узлу команду на отключение всех клиентов (ESX) от этого узла. Соответственно все команды процессятся через первичный узел и ситуации Split Brain не возникает. При налаживании канала синхронизации - оба узла синхронизируются (второй получает данные от первого) и работа в режиме Active-Active продолжается.
Если Heartbeat по сети iSCSI-трафика не прошел. Это значит умер вторичный узел, а не канал синхронизации. Соответственно, ESX продолжает запись на первичную ноду до того, как вторичный узел не придет в себя. После этого опять произойдет синхронизация и кластер StarWind HA продолжит свою работу.
Вторичная нода тоже пингует первичную при разрыве канала синхронизации на случай если упал сам первичный узел, а не канал синхронизации. Если ответа нет - она продолжает работу по записи данных на диск. После восстановления канала синхронизации с этой нодой синхронизируется первичный узел и конфигурация Active-Active восстанавливается.
Скачать продукт StarWind Enteprise можно по этой ссылке. Купить StarWind можно по этой ссылке.