Windows Server — не для бедных

Была у меня мечта — сделать отказоустойчивое решение для запуска виртуальных машин под Hyper-V в варианте «для бедных» — только на обычных компьютерах, без использования общей дисковой памяти. Виделись мне возможными два варианта реализации. Первый вариант — собрать кластер из трёх хостов Hyper-V с общей памятью в виде кластерного Storage Spaces с зеркалированием, состоящего из трёх iSCSI-дисков,  а диски iSCSI — подключить с target’ов, размещёнными на тех же самых хостах Hyper-V, разместив при этом отдаваемые виртуальные диски (VHD) на встроенных в хосты физических дисках. Второй вариант — поднять некластерную виртуальную машину на одном узле кластера Hyper-V (разместив её на встроенном физическом диске), настроить её репликацию на второй узел и организовать переключение при необходимости на реплику и обратно скриптом, выполняемым как Generic script role. И оба варианта не удалось реализовать из-за искусственных ограничений, введённых Microsoft при работе некоторых ролей сервера на узлах кластера.

Подробности неудач описаны ниже.

Вариант первый — Storage Spaces на базе iSCSI-дисков, отдаваемых с самих хостов.

Начал я с того, что установил на три машины (для тестов использовались виртуальные машины под VMWare Workstation) Windows Server 2012 R2 , ввел их в домен и добавил на них роли Hyper-V и службы iSCSI Target роли File and Storage Services. После этого настроил на них iSCSI Target на публикацию виртуальных дисков, размещённых на подключенном к каждой машине диске. Затем сконфигурировал на каждой машине инициатор iSCSI с подключением ко всем трём машинам. Все три диска iSCSI увиделись на каждой машине. После этого я установил компонент Failover Cluster а все три машины и, как положено, запустил мастер проверки конфигурации. Мастер отработал успешно. После чего я создал кластер — и увы: созданные ранее диски iSCSI не подключились к инициаторам.

Быстрый анализ причин неисправности показал, что служба iSCSI Target «забыла» свою конфигурацию, которая была настроена до создания кластера. Попытки восстановить конфигурацию ни к чему не привели: графический интерфейс управления iSCSI Target при работе в кластере отказывался публиковать уже созданные виртуальные диски, потому что они были размещены вне кластерных томов, то есть — той самой общей дисковой памяти, от которой я хотел отказаться. Попытки обойти этот отказ с помощью Powershell ни к чему не привели — и это свидетельствовало о том, что ограничение это заложено в архитектуру службы, а не в графический интерфейс управления.

Так пришлось отказаться от первого варианта реализации «кластера Hyper-V для бедных». Но оставался ещё второй вариант.

Вариант второй — Generic script, управляющий репликацией виртуальных машин.

Тут я тоже начал с того, что на две машины установил Windows Server 2012 R2 , ввел их в домен и добавил на них роли Hyper-V. После этого — настроил оба этих хоста как приёмники репликации с аутентификацией по Kerberos (протокол HTTP). И разрешил в брандмауэре правило, разрешающее принимать трафик репликации Hyper-V по HTTP (почему-то это надо настраивать отдельно). Создал виртуальную машину, настроил для неё репликацию. Проверил что planned failover выполняется с первого хоста на второй и обратно, и убрал пока что репликацию, чтобы восстановить её после добавления хостов в кластер. Затем установил компонент Failover Cluster, и запустил мастер проверки конфигурации. Мастер выдал предупреждение, что нет дисков, пригодных для кластера, но в целом создание кластера не запретил. Затем я прямо из мастера проверки конфигурации создал кластер. И попытался настроить репликацию ранее созданной виртуальной машины.

Не тут-то было. Мастер настройки репликации отказался принимать в качестве цели второй хост-узел кластера и сообщил, что для репликации на него нужно добавить кластерную роль Hyper-V Replication broker и настраивать репликацию через эту роль. Роль-то я добавил, но вот настроить репликацию не получилось: эта роль, будучи кластерной, потребовала, чтобы я в качестве места размещения  реплики указал кластерный том, то есть — ту самую общую память, без которой я хотел обойтись. После чего продолжать дальше не имело никакого смысла.

То есть, и второй вариант «кластера Hyper-V для бедных» оказался нереализуемым.

Выводы.

Оба ограничения, в которые я уткнулся, пытаясь реализовать отказоустойчивое решение для виртуализации без использования общей памяти, носят налёт некоей искусственности: при создании кластера блокируются возможности, которые были доступны вне кластера. При этом, с точки зрения архитектуры, ничего невозможного в сохранении блокируемой функциональности нет: ведь можно же, к примеру, на узлах кластера создавать не-кластерные общие папки или запускать виртуальные машины не под управлением службы кластеризации.

Похоже, что Microsoft то ли состоит в сговоре с производителями дисковых устройств, допускающих множественное подключение (и не таких уж дешёвых, кстати), то ли не хочет заморачиваться поддержкой нужд мелких фирм. С учётом общей стратегии этой фирмы по уводу всего в облака мне кажется правильным второе предположение. Если так, то жаль.

 

Реклама
  1. В такой ситуации нам поможет Windows Server 2016 🙂

    Создание кластера без общего хранилища — Storage Spaces Direct !
    Storage Spaces Direct — enables building highly available (HA) storage systems with local storage.

  2. Да, там что-то обещают похожее на вариант «для бедных». Но дьявол кроется в деталях реализации — которые нужно будет смотреть в уже релизной версии.

  3. @mvv-rus
    Согласен!
    Пока, что можн посмотреть записи вебинара от Алексея Кибкало

    Запись вебинара: Технологии работы с дисковыми хранилищами и файловыми системами Windows Server 2016
    http://www.stars-s.ru/classify.asp?c_no=1645

    Запись вебинара: Технологии работы с дисковыми хранилищами и файловыми системами Windows Server 2016 (Часть 2)
    http://www.stars-s.ru/classify.asp?c_no=1647

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: