Для начала кратко о том, зачем вообще нужна гостевая кластеризация. Большая часть приложений и сервисов, используемых в современной ИТ-инфраструктуре, может быть запущена внутри виртуальных машин (ВМ). Виртуализация дает целый ряд очевидных и не очень преимуществ, перечисление которых выходит за рамки поста. Чем более критичное для компании приложение крутится внутри ВМ, тем более важной становится задача обеспечения высокой доступности такой ВМ.
Обеспечить высокую доступность ВМ можно разместив ее на физическом (хостовом) кластере, в данном контексте – кластере Hyper-V. Выход из строя физического узла кластера, на котором была запущена ВМ, приводит к автоматическому восстановлению ВМ на другом узле кластера. Эта процедура отработки отказа может привести пусть и к кратковременной, но потере связи с ВМ и приложением внутри нее.
Другой метод повышения доступности – объединение в Failover Cluster двух или более ВМ, то есть создание гостевого кластера в том смысле, что кластер создается на базе гостевых ОС. В этом случае мы уже говорим о высокой доступности не ВМ как таковых, а приложения (или приложений) внутри гостевого кластера.
Разумеется, для большей надежности можно сочетать хостовую и гостевую кластеризацию.
Гостевая кластеризация, впрочем как и хостовая, предполагает наличие некоторого общего хранилища. Применительно к виртуальным машинам таким хранилищем до выхода Windows Server 2012 мог выступать iSCSI-storage.
УвеличитьВ Windows Server 2012 благодаря Virtual Fibre Channel появилась возможность подключать ВМ через HBA-адаптер хоста непосредственно к FC-storage.
УвеличитьОднако в любом случае для построения гостевого кластера необходимо было предоставить ВМ прямой доступ к хранилищу. Во многих сценариях, например для хостинг-провайдеров, такой вариант является очень неудобным. Общие VHDX-файлы как раз и позволяют эту проблему решить, поскольку абстрагируют ВМ от особенностей реализации СХД. Для создания гостевого кластера к виртуальным машинам подключается нужное количество Shared VHDX, которые и представляют собой общее кластерное хранилище. А где физически, на каком конкретно СХД и LUN-е эти файлы располагаются – это уже дело провайдера.
УвеличитьПоддерживаемые конфигурации и настройка Shared VHDX
С точки зрения реализации описанного подхода можно выделить две основные конфигурации использования Shared VHDX. В первой конфигурации общие VHDX-файлы располагаются на CSV-томе физического кластера. CSV-том, в свою очередь, может быть реализован на любом поддерживаемом службой кластеризации Windows Server блочном хранилище (Fibre Channel, iSCSI, Shared SAS).
Во второй конфигурации VHDX-файлы располагаются в общей папке файлового кластера
Scale-Out File Server. Последний, замечу, также предполагает наличие CSV-тома. Как видно, и та, и другая конфигурация в итоге приводят к сочетанию хостовой и гостевой кластеризации. Хостовая кластеризация повышает доступность общих VHDX, создаваемый затем поверх гостевой кластер обеспечивает высокую доступность сервисов и приложений внутри ВМ.
УвеличитьДля настройки Shared VHDX прежде всего, конечно, необходимо создать один или несколько VHDX-файлов и расположить их, используя одну из перечисленных выше конфигураций. Затем подключить Shared VHDX можно в консоли Hyper-V, командлетами PowerShell или с помощью сервисного шаблона (service template) в System Center 2012 R2 Virtual Machine Manager.
В консоли Hyper-V это делается путем добавления нового SCSI-диска: в свойствах ВМ выбираете
SCSI Controller, затем
Hard Drive, нажимаете кнопку
Add, указываете путь к VHDX-файлу, после чего выбираете
Advanced Features и помечаете соответствующий чекбокс.
УвеличитьПовторяете процедуру для всех ВМ, которые планируется объединить в кластер.
Тоже самое можно сделать в PowerShell следующими командлетами:
New-VHD -Path C:\ClusterStorage\Volume1\Shared.VHDX -Fixed -SizeBytes 30GB
Add-VMHardDiskDrive -VMName Node1 -Path C:\ClusterStorage\Volume1\Shared.VHDX -ShareVirtualDisk
Add-VMHardDiskDrive -VMName Node2 -Path C:\ClusterStorage\Volume1\Shared.VHDX –ShareVirtualDisk
В VMM 2012 R2 в сервисном шаблоне в разделе
Hardware Configuration необходимо также добавить SCSI-диск, указать путь к VHDX-файлу и пометить чекбокс
Share the disk across the service tier. При развертывании ВМ на основе такого шаблона VMM подключит указанный файл в качестве Shared VHDX.
УвеличитьКакой бы вариант вы не выбрали, внутри ВМ подключенный VHDX будет выглядеть как обычный SAS-диск.
УвеличитьТребования к Shared VHDX
Необходимо помнить следующие требования к Shared VHDX:
- Файлы должны быть обязательно VHDX, формат VHD для shared-конфигурации не поддерживается. При этом сама гостевая ОС вполне может быть установлена на VHD-диск.
- На хостах Hyper-V, а в случае использования Scale-Out File Server и на узлах файлового кластера, должна быть установлена версия Windows Server 2012 R2.
- Гостевой ОС может быть Windows Server 2012 R2 или Windows Server 2012 с последней версией интеграционных компонент.
- Поддерживаются как ВМ первого поколения (Generation 1), так и второго (Generation 2).
Диагностика и тестирование
Для диагностики возможных проблем в Performance Monitor добавлен новый объект
Hyper-V Shared VHDX с набором различных счетчиков, которые вы можете анализировать на хостах Hyper-V.
УвеличитьКроме того, добавлены новые журналы, просмотр которых возможен, как обычно, с помощью Event Viewer,
Увеличитьлибо PowerShell:
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Shared-VHDX/Operational
Get-WinEvent -LogName Microsoft-Windows-Hyper-V-Shared-VHDX/Reservation
Наконец, для целей тестирования, изучения, разработки есть возможность использовать «специальную» конфигурацию Shared VHDX. Для этой конфигурации достаточно одного физического хоста с Windows Server 2012 R2 и поднятой ролью Hyper-V, на котором и можно расположить общие VHDX-файлы, не создавая кластеры с CSV-томами и пр. Чтобы реализовать подобный вариант вам нужно:
- Установить службу Failover Clustering
Install-WindowsFeature Failover-Clustering
- Вручную подключить фильтр Shared Virtual Disk для раздела, на котором будут располагаться общие VHDX-файлы, например для диска D: это будет выглядеть как
FLTMC.EXE attach svhdxflt D:
Но помните, что это неподдерживаемая конфигурация и применять ее в реальной среде не следует.
Таким образом, механизм общих VHDX-файлов помогает реализовать более эффективную схему гостевой кластеризации и, в конечном итоге, повысить доступность критически важных приложений и сервисов вашей инфраструктуры. Особенно полезной эта технология может оказаться для частных облаков и хостинговых сценариев.