Многие из вас слышали о решении для построения отказоустойчивой инфраструктуры хранилищ StarWind Virtual SAN. Этот продукт позволяет всего на базе двух серверов построить инфраструктуру хранения и исполнения виртуальных машин Hyper-V, что является отличным решением для небольших предприятий и филиалов. Помимо этого, с помощью StarWind можно строить и гибридные облака на базе публичного облака Azure (об этом мы очень подробно писали вот тут).
Ну а сегодня мы рассмотрим полноценную масштабируемую онпремизную архитектуру StarWind Virtual SAN, которая позволяет расширять как набор вычислительных узлов Hyper-V, так и множество серверов хранения, где работает ПО StarWind в синхронном режиме обеспечения отказоустойчивости.
Ниже будет рассмотрена вот такая архитектура:
Серверные узлы хост-серверов Hyper-V объединены в Failover Cluster, что позволяет гибко масштабировать его и защититься от отказов оборудования, а узлы StarWind обеспечивают надежное хранение, при этом диски StarWind добавлены в тома CSV (Cluster Shared Volumes - на картинке это CSV1, CSV2 и Witness), что позволяет эффективно управлять хранилищами и обеспечить их надежность.
Хранилище Witness необходимо для обмена хартбитами через сеть хранения и исключения ситуации Split Brain для кластера Failover Cluster (при этом хранилище Witness также будет защищено от отказов средствами StarWind).
Обратите внимание, что для обеспечения полного комплекса мер по отказоустойчивости, вам потребуется не менее трех сетевых интерфейсов на сервере виртуализации и не менее 5 на серверах хранения StarWind (их назначение понятно из картинки выше).
Для начала конфигурации такой инфраструктуры потребуется сделать следующее:
Убедиться, что серверные узлы добавлены в домен.
Включить фичи Failover Clustering и Multipath I/O, а также роль Hyper-V на всех серверных узлах.
Настроить сетевые интерфейсы на каждом узле таким образом, чтобы канал синхронизации и канал трафика сигналов доступности (heartbeat) были в разных подсетях, как показано на диграмме (например, подсети 172.16.10.x и 172.16.20.x - для хартбитов, а подсети 172.16.30.x и 172.16.40.x - для канала синхронизации).
Чтобы iSCSI-инициатор смог обнаружить все интерфейсы StarWind Virtual SAN, файл конфигурации StarWind.cfg должен быть изменен после остановки службы StarWind. Он находится по адресу: C:\Program Files\StarWind Software\StarWind\StarWind.cfg. Нужно найти строку <iScsiDiscoveryListInterfaces value=”0”/> и изменить значение с 0 на 1, после чего снова запустить службу.
Далее нужно включить доступ по нескольким путям на узлах StarWind, для этого нужно запустить MPIO manager: Start->Administrative Tools>MPIO. Далее идем в Discover Multi-Path, ставим галку Add support for iSCSI device и нажимаем Add, после чего перезагружаем сервер.
Теперь скачиваем продукт StarWind Virtual SAN по этой ссылке и устанавливаем его на обоих узлах:
Минимально вам потребуется установить следующие компоненты:
StarWind Virtual SAN service - это основные службы StarWind.
StarWind Management Console - это графическая консоль, позволяющая выполнять все операции с хранилищами.
В процессе установки можно запросить полнофункциональный бесплатный ключ, который позволит в течение пробного периода использовать все возможности StarWind Virtual SAN:
Обратите внимание, что вы можете пользоваться также бесплатной версией продукта сколько угодно долго (далее мы рассматриваем только полнофункциональную версию). После окончания установки запускаем StarWind Management Console:
Если консоль установлена там же, где и основной сервис StarWind, то этот сервер будет сразу же добавлен, если же консоль размещена на отдельном сервере - нужно будет добавить оба узла StarWind, нажав на иконку Add Server.
Затем нажмите на иконку Add Device, и далее StarWind попросит вас создать новый пул хранения (сначала сделаем это для хранилища Witness, а для томов CSV1 и CSV2 процедура выглядит полностью аналогично):
Выбираем размещение виртуального диска:
Для хранилища StarWind должно быть выполнено 3 условия:
Диск инициализирован как GPT.
Раздел отформатирован как NTFS.
Разделу назначена буква диска.
Создаем диск как Thick-provisioned (то есть место резервируется сразу):
Далее определяем политику кэширования L1 (то есть в RAM, подробнее у нас тут). Вообще, StarWind рекомендует иметь 1 ГБ такого кэша на 1 ТБ сырой емкости дисков хранения:
Затем указываем, есть ли у нас флэш-кэш для наших хранилищ (это уровень L2, иметь его рекомендуется в размере 10% от емкости хранилища):
Затем создаем новый iSCSI таргет:
После этого добавляем второй HA-узел StarWind в консоль:
Для первого узла в контекстном меню выбираем пункт Replication Manager:
В нем выбираем пункт Add Replica и затем вариант Synchronous two-way replication:
Этот тип репликации позволяет поддерживать оба узла в полностью синхронном состоянии, что обеспечит RPO=0 в случае сбоя на одном из узлов хранения.
Добавляем второй, партнерский, HA-узел, который мы только что добавили в консоль:
В качестве стратегии восстановления (Failover Strategy) выбираем Heartbeat:
Затем создаем устройство на втором узле:
Указываем его размещение:
Далее мы переходим к настройке канала репликации:
Тут нажимаем Change Network Settings и переходим в матрицу настройки каналов репликации:
Рекомендуется вешать канал синхронизации и канал хартбитов на одни интерфейсы, чтобы у вас не возникло ситуации Split Brain в кластере хранения (хартибиты не идут, а канал синхронизации работает, и оба узла считают себя главными).
Далее выбираем режим синхронизации с уже существующим HA-устройством (Synchronize from existing Device):
После нажатия кнопки Create Replica новое устройство должно появиться в консоли StarWind:
Witness-девайсы теперь сконфигурированы. Теперь нужно настроить тома CSV, где вы будете хранить виртуальные машины. Процесс их настройки аналогичен, и после него тома появятся в консоли StarWind (на картинке том CSV1):
Теперь надо на каждом из узлов Hyper-V настроить обнаружение узлов StarWind. Для этого запускаем оснастку Start > Administrative Tools > iSCSI Initiator (это также можно сделать командой iscsicpl). Появятся настройки iSCSI Initiator. Там на вкладке Discovery нужно нажать кнопку Discover Portal:
Указываем адрес первого узла StarWind, после чего нажимаем Advanced:
Тут выбираем Microsoft iSCSI Initiator как Local adapter и выбираем IP-адрес первого узла серверного кластера из той же подсети.
Затем опять идем вDiscover Target Portal и вбиваем второй IP-адрес первого узла StarWind:
Опять идем в Advanced Settings и там вводим второй Initiator IP по аналогии с первым адресом (из той же подсети, что и Target Portal):
В итоге настройки iSCSI инициатора на первом узле у вас будут выглядеть вот так:
Мы добавили Target Portals от первого узла хранения StarWind. Теперь нужно проделать все то же самое для второго узла.
Идем в Discover Target Portal и там указываем первый интерфейс второго узла StarWind:
Далем все по аналогии в Advanced Settings:
Добавляем второй интерфейс второго узла StarWind:
И так же, аналогично, вводим IP инициатора в той же подсети:
После всех манипуляций картина у вас будет такая:
Все описанные выше шаги повторяем и на втором серверном узле кластера серверов Hyper-V. Там картина будет такова:
После того, как таргеты были добавлены, нам надо соединиться с ними. Для этого запускаем Microsoft iSCSI Initiator на первом вычислительном узле Hyper-V и переходим на вкладку Targets. Созданные таргеты должны быть в разделе Discovered Targets (4 штуки в нашем случае).
Если таргеты не видны, возможно проблема в сетевом экране. В этом случае на узле хранения нужно пойти в настройки фаервола, а также посмотреть видимость сетей в разделе StarWind Management Console -> Configuration -> Network.
Нажимаем кнопку Connect для таргета iSCSI и отмечаем оба предложенных чекбокса:
Жмем Advanced Settings и выбираем локальный адаптер, IP инициатора и IP-адрес таргет портала первого узла из этой же подсети:
Аналогично настраиваем соединение к тому же таргету через другую подсеть (для этого нужно второй раз нажать Connect для того же таргета):
Здесь аналогично жмем Advanced Settings и уже настраиваем вторую подсеть для первого узла StarWind:
Таким образом мы настроили два пути к одному таргету первого узла StarWind с первого узла Hyper-V.
Далее таким же точно образом настраиваем подключение на первом узле Hyper-V ко второму узлу StarWind (Partner HA Device):
Делаем все по аналогии с подключением к первому узлу для первого интерфейса второго узла:
И настраиваем второй путь через другую подсеть для второго узла StarWind, второй раз нажав Connect для этого таргета:
Указанные шаги нужно повторить для всех HA-устройств обоих узлов StarWind. В итоге вы увидите подобную картинку (помните, что для каждого таргета используется 2 пути):
После того, как вы все это сделаете на первом узле Hyper-V, всю эту муторную процедуру нужно будет повторить и на втором вычислительном узле для обоих узлов хранения StarWind Virtual SAN.
Только после этого можно инициализировать диски, созданные в StarWind, с помощью оснастки Disk Management (помните, что нужно проделать это на обоих узлах Hyper-V).
Затем нужно создать кластер из серверов Hyper-V (Failover Cluster). Для этого идем в Server Manager и там выбираем пункт Failover Cluster Manager из меню Tools.
Нажимаем Create Cluster из меню действий в правой панели, после чего добавляем оба вычислительных узла:
Проводим валидацию кластера и создаем его:
Вбиваем имя кластера:
Убеждаемся, что все указано правильно:
И запускаем процесс создания Failover Cluster:
Теперь нужно добавить Cluster Shared Volumes, которые нужны, чтобы создавать на них виртуальные машины. Запускаем Failover Cluster Manager и:
Идем в Cluster->Storage -> Disks.
Нажимаем Add Disk из панели действий и выбираем инициализированные нами диски из списка.
Чтобы настроить диск Witness выбираем из контекстного меню Cluster->More Actions->Configure Cluster Quorum Settings и следуем указаниям мастера.
Нажимаем правой кнопкой на диске и выбираем пункт Add to Cluster Shared Volumes.
Вот и все - настройка конфигурации, описанной в начале статьи, завершена. Можно создавать виртуальные машины и наслаждаться отказоустойчивым хранилищем StarWind Virtual SAN, а также добавлять в Failover-кластер новые вычислительные узлы.