Поделиться через


Создание кластера Azure Stack HCI с помощью Windows PowerShell

Область применения: Azure Stack HCI версии 22H2

Внимание

Azure Stack HCI теперь является частью Azure Local. Однако старые версии Azure Stack HCI, например 22H2, будут продолжать ссылаться на Azure Stack HCI и не отражают изменение имени. Подробнее.

Предупреждение

Инструкции по развертыванию, приведенные в этой статье, относятся к старой версии Azure Stack HCI версии 22H2. Для новых развертываний рекомендуется использовать последнюю общедоступную версию локального развертывания Azure, см. о локальном развертывании Azure.

В этой статье вы узнаете, как использовать Windows PowerShell для создания гиперконвергентного кластера Azure Stack HCI с использованием Storage Spaces Direct. Если вы предпочитаете использовать мастер создания кластера в Windows Admin Center для создания кластера, см. статью "Создание кластера с помощью Центра администрирования Windows".

Примечание.

Если вы выполняете установку одного сервера Azure Stack HCI 21H2, используйте PowerShell для создания кластера.

У вас есть выбор между двумя типами кластеров:

  • Стандартный кластер с одним или двумя узлами сервера, которые находятся на одном сайте.
  • Растянутый кластер с по крайней мере четырьмя узлами сервера, охватывающими два сайта, с двумя узлами на сайт.

Для сценария с одним сервером выполните те же инструкции для одного сервера.

Примечание.

Кластеры Stretch не поддерживаются в одной конфигурации сервера.

В этой статье мы создадим пример кластера с именем Cluster1, состоящий из четырех узлов сервера с именем Server1, Server2, Server3 и Server4.

Для сценария растянутого кластера мы используем ClusterS1 в качестве имени и используем те же четыре узла сервера, растянутые на сайтах Site1 и Site2.

Для получения дополнительной информации о растянутых кластерах см. Обзор растянутых кластеров.

Подготовка к работе

Прежде чем начать, убедитесь, что вы:

  • Изучите и поймите системные требования Azure Stack HCI.
  • Изучите и поймите требования к физической сети и требования к сети узла для Azure Stack HCI.
  • Установите ОС Azure Stack HCI на каждом сервере в кластере. См. статью "Развертывание операционной системы Azure Stack HCI".
  • Убедитесь, что все серверы находятся в правильном часовом поясе.
  • Имейте учетную запись, которая входит в группу локальных администраторов на каждом сервере.
  • У вас есть права на создание объектов в Active Directory.
  • Для растянутых кластеров настройте два сайта заранее в Active Directory.

Использование Windows PowerShell

PowerShell можно запустить локально в сеансе RDP на хост-сервере или удаленно запустить PowerShell с компьютера управления. В этой статье рассматривается удаленная опция.

При запуске PowerShell с компьютера управления включите -Name или -Cluster параметр с именем сервера или кластера, которым вы управляете. Кроме того, может потребоваться указать полное доменное имя (FQDN) при использовании -ComputerName параметра для узла сервера.

Вам нужны командлеты средств удаленного администрирования сервера (RSAT) и модули PowerShell для Hyper-V и отказоустойчивого кластеризования. Если командлеты и модули еще не доступны в сеансе PowerShell на вашем управляющем компьютере, их можно добавить с помощью следующей команды: Add-WindowsFeature RSAT-Clustering-PowerShell.

Шаг 1. Настройка серверов

Сначала подключитесь к каждому из серверов, присоедините их к домену (тот же домен, в который находится компьютер управления), а также установите необходимые роли и компоненты.

Шаг 1.1. Подключение к серверам

Чтобы подключиться к серверам, необходимо сначала подключиться к одному домену или полностью доверенному домену, а также иметь локальные административные разрешения на серверы.

Откройте PowerShell и используйте полное доменное имя или IP-адрес сервера, к которому вы хотите подключиться. После выполнения следующей команды на каждом сервере появится запрос на ввод пароля.

В этом примере предполагается, что серверы называются Server1, Server2, Server3 и Server4:

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

Вот еще один пример выполнения того же действия:

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Совет

При выполнении команд PowerShell на компьютере управления может возникнуть ошибка, например WinRM, не может обработать запрос. Чтобы устранить эту проблему, используйте PowerShell для добавления каждого сервера в список надежных узлов на компьютере управления. Этот список поддерживает подстановочные знаки, например Server* .

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

Чтобы просмотреть список надежных узлов, введите Get-Item WSMAN:\Localhost\Client\TrustedHosts.

Чтобы очистить список, введите Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Шаг 1.2. Присоединение к домену и добавление учетных записей домена

На предыдущем шаге вы подключились к каждому узлу сервера с учетной записью локального администратора <ServerName>\Administrator.

Чтобы продолжить, необходимо присоединить серверы к домену и использовать учетную запись домена, которая находится в локальной группе администраторов на каждом сервере.

Enter-PSSession Используйте командлет для подключения к каждому серверу и выполните следующий командлет, заменив имя сервера, доменное имя и учетные данные домена:

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

Если учетная запись администратора не входит в группу "Администраторы домена", добавьте учетную запись администратора в локальную группу администраторов на каждом сервере или еще лучше добавьте группу, используемую для администраторов. Для этого можно использовать следующую команду:

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

Шаг 1.3. Установка ролей и компонентов

Следующим шагом является установка необходимых ролей и компонентов Windows на каждом сервере кластера. Ниже приведены роли для установки:

  • BitLocker
  • Адаптация для центров обработки данных
  • Отказоустойчивая кластеризация
  • Файловый сервер
  • Модуль FS-Data-Deduplication для дедупликации данных
  • Hyper-V
  • PowerShell для Hyper-V
  • Модуль RSAT-Clustering-PowerShell
  • Модуль RSAT-AD-PowerShell
  • NetworkATC
  • Ограничение пропускной способности SMB
  • Реплика хранилища (для растянутых кластеров)

Используйте следующую команду для каждого сервера (если вы подключены через удаленный рабочий стол, опустите -ComputerName параметр здесь и в последующих командах):

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

Чтобы выполнить команду на всех серверах в кластере одновременно, используйте следующий сценарий, изменив список переменных в начале, чтобы соответствовать вашей среде:

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

Затем перезапустите все серверы:

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

Шаг 2. Подготовка к настройке кластера

Затем убедитесь, что серверы готовы к кластеризации.

Чтобы убедиться, что серверы еще не принадлежат кластеру, рекомендуется выполнить следующие команды:

Используется Get-ClusterNode для отображения всех узлов:

Get-ClusterNode

Используется Get-ClusterResource для отображения всех узлов кластера:

Get-ClusterResource

Используется Get-ClusterNetwork для отображения всех сетей кластера:

Get-ClusterNetwork

Шаг 2.1. Подготовка дисков

Перед включением технологии Пулы хранилища (Storage Spaces Direct) убедитесь, что постоянные диски пусты. Выполните следующий скрипт, чтобы удалить старые секции и другие данные.

Примечание.

Исключите из скрипта все съемные диски, подключенные к узлу сервера. Если вы запускаете этот скрипт локально, например из узла сервера, вы можете не захотеть очищать съемный диск, который может использоваться для развертывания кластера.

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

Шаг 2.2. Проверка конфигурации кластера

На этом шаге убедитесь, что узлы сервера настроены правильно для создания кластера. Командлет Test-Cluster используется для выполнения тестов, чтобы проверить, подходит ли конфигурация в качестве гиперконвергентного кластера. В следующем примере используется -Include параметр с определенными категориями тестов, чтобы убедиться, что правильные тесты включены в проверку.

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

Шаг 3. Создание кластера

Теперь вы готовы создать кластер с узлами сервера, проверенными на предыдущих шагах.

При создании кластера может появиться предупреждение "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below.", которое вы можете спокойно игнорировать. Это предупреждение связано с отсутствием дисков, доступных для свидетеля кластера. Свидетель кластера создается на последующих шагах.

Примечание.

Если серверы используют статические IP-адреса, измените следующую команду, чтобы отразить статический IP-адрес, добавив следующий параметр и указав IP-адрес: -StaticAddress <X.X.X.X>;

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

После создания кластера может пройти некоторое время, прежде чем имя кластера будет реплицировано через DNS в вашем домене, особенно если серверы рабочей группы были недавно добавлены в Active Directory. Хотя кластер может отображаться в Windows Admin Center, он может быть недоступен для подключения.

Убедитесь, что все ресурсы кластера находятся в сети:

Get-Cluster -Name $ClusterName | Get-ClusterResource

Если не удается восстановить работу кластера через некоторое время, в большинстве случаев можно подключиться, используя имя одного из серверов в составе кластера вместо имени кластера.

Шаг 4. Настройка сети узлов

Корпорация Майкрософт рекомендует использовать Network ATC для развертывания сетей узлов, если вы используете Azure Stack HCI версии 21H2 или более поздней. В противном случае ознакомьтесь с разделом Требования к сети узла для получения конкретных требований и информации.

Network ATC может автоматизировать развертывание вашей предполагаемой конфигурации сети, если указать один или несколько типов намерений для адаптеров. Дополнительные сведения о конкретных типах намерений см. в статье " Типы сетевого трафика".

Шаг 4.1. Просмотр физических адаптеров

На одном из узлов кластера выполните Get-NetAdapter для просмотра физических адаптеров. Убедитесь, что каждый узел в кластере имеет одинаково названные физические адаптеры и что они показывают статус 'Всё в порядке'.

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

Если имя физического адаптера зависит от узлов в кластере, его можно переименовать с помощью Rename-NetAdapter.

Rename-NetAdapter -Name oldName -NewName newName

Шаг 4.2. Настройка намерения

В этом примере создается намерение, указывающее намерение вычислений и хранилища. Подробнее о примерах намерений см. в статье "Упрощение сетей узлов с помощью Network ATC".

Выполните следующую команду, чтобы добавить типы намерений хранилища и вычислений в pNIC01 и pNIC02. Обратите внимание, что мы указываем -ClusterName параметр.

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

Команда должна немедленно вернуться после первоначальной проверки.

Шаг 4.3. Проверка развертывания намерения

Запустите командлет Get-NetIntent, чтобы увидеть назначение кластера. Если у вас несколько намерений, можно указать Name параметр, чтобы просмотреть сведения только о конкретном намерении.

Get-NetIntent -ClusterName $ClusterName

Чтобы просмотреть состояние подготовки намерения, выполните Get-NetIntentStatus команду:

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Обратите внимание на параметр состояния, показывающий подготовку, проверку, успешность, сбой.

Статус должен показывать успех через несколько минут. Если статус выполнения не является успешным или отображается сбой параметра состояния, проверьте средство просмотра событий на наличие проблем.

Примечание.

В настоящее время Network ATC не настраивает IP-адреса для никаких из управляемых адаптеров. После того как статус отчетов будет завершен, необходимо добавить IP-адреса в адаптеры.

Шаг 5. Настройка сайтов (растянутый кластер)

Эта задача применяется только в том случае, если вы создаете растянутый кластер между двумя сайтами с по крайней мере двумя серверами на каждом сайте.

Примечание.

Если вы заранее настроили сайты и службы Active Directory, вам не нужно создавать сайты вручную, как описано в следующем разделе.

Шаг 5.1. Создание сайтов

В следующем командлете FaultDomain — это просто альтернативное название для сайта. В этом примере в качестве имени растянутого кластера используется ClusterS1.

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Используйте эту командлет Get-ClusterFaultDomain, чтобы убедиться, что оба сайта созданы для кластера.

Get-ClusterFaultDomain -CimSession $ClusterName

Шаг 5.2. Назначение узлов сервера

Затем мы назначаем четыре узла сервера соответствующим сайтам. В следующем примере сервер1 и сервер2 назначены сайту Site1, а Сервер3 и Server4 назначены сайту Site2.

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

С помощью командлета Get-ClusterFaultDomain убедитесь, что узлы находятся в правильных участках.

Get-ClusterFaultDomain -CimSession $ClusterName

Шаг 5.3. Настройка предпочтительного сайта

Вы также можете определить глобальный предпочтительный сайт, что означает, что указанные ресурсы и группы должны выполняться на предпочтительном сайте. Этот параметр можно определить на уровне сайта с помощью следующей команды:

(Get-Cluster).PreferredSite = "Site1"

Указание предпочтительного сайта для растянутых кластеров имеет следующие преимущества:

  • Холодный запуск — во время холодного запуска виртуальные машины размещаются на предпочтительном сайте.

  • Голосование кворума

    • С динамическим кворумом вес уменьшается с пассивного (реплицированного) сайта, чтобы убедиться, что предпочтительный сайт выживает, если все остальные вещи равны. Кроме того, узлы сервера сначала удаляются из пассивного сайта во время перегруппировки после таких событий, как асимметричные сбои сетевого подключения.

    • Во время распада кворума на два сайта, если нет возможности связаться со свидетелем кластера, предпочтительный сайт автоматически выбирается как выигравший. Затем узлы сервера на пассивном сайте выходят из состава кластера, что позволяет кластеру пережить одновременную потерю 50% голосов.

Предпочтительный сайт также можно настроить на уровне роли кластера или группы. В этом случае для каждой группы виртуальных машин можно настроить другой предпочтительный сайт, чтобы сайт был активным и предпочтителен для определенных виртуальных машин.

Шаг 5.4. Настройка растянутой кластеризации с помощью Сетевого ATC

После версии 22H2 можно использовать Network ATC для настройки Stretch-кластеризации. Network ATC добавляет Stretch в качестве типа намерения, начиная с версии 22H2. Чтобы развернуть интент с Stretch clustering и Network ATC, выполните следующую команду:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

Намерение stretch также можно объединить с другими намерениями при развертывании с помощью Сетевого ATC.

SiteOverrides

На основе шагов 5.1-5.3 вы можете добавить предварительно созданные сайты к вашему намерению для расширения, развернутому с помощью Network ATC. Сетевой ATC управляет этим с помощью SiteOverrides. Чтобы создать SiteOverride, выполните следующую команду:

 $siteOverride = New-NetIntentSiteOverrides

После создания siteOverride можно задать любое свойство для siteOverride. Убедитесь, что свойство name объекта siteOverride имеет то же имя, что и имя сайта в ClusterFaultDomain. Несоответствие имен между ClusterFaultDomain и siteOverride приводит к тому, что siteOverride не применяется.

Свойства, которые можно задать для конкретного siteOverride: Имя, StorageVlan и StretchVlan. Например, вы создадите 2 siteOverrides для двух сайтов — site1 и site2, используя следующее:

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

Вы можете запустить $siteOverride1 и $siteOverride2 в окне PowerShell, чтобы убедиться, что все свойства заданы нужным образом.

Наконец, чтобы добавить один или несколько «siteOverrides» в намерение, выполните следующую команду:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

Шаг 6. Включите Хранилище общего доступа

После создания кластера используйте Enable-ClusterStorageSpacesDirect командлет, который включит Storage Spaces Direct и выполнит следующие действия автоматически.

  • Создайте пул носителей: создает пул носителей для кластера, который имеет имя, например "Пул носителей Cluster1".

  • Создайте диск журнала производительности кластера: создает виртуальный диск журнала производительности кластера в пуле носителей.

  • Создание томов данных и журналов. Создает том данных и том журнала в пуле носителей.

  • Настройка кешей для Хранилища с программно определяемым пространством: Если для Хранилища с программно определяемым пространством доступно несколько типов носителей (дисков), самые быстрые используются в качестве устройств кеша (чтение и запись в большинстве случаев).

  • Создание уровней: создает два уровня в качестве уровней по умолчанию. Один из них называется "Емкость", а другой — "Производительность". Командлет анализирует устройства и конфигурирует каждый уровень с учетом типов устройств и их отказоустойчивости.

Для сценария с одним сервером единственным параметром FaultDomainAwarenessDefault является PhysicalDisk. Enable-ClusterStorageSpacesDirect командлет обнаруживает один сервер и автоматически настраивает FaultDomainAwarenessDefault в качестве PhysicalDisk во время включения.

Командлет Enable-ClusterStorageSpacesDirect также выполнит следующее для растянутых кластеров:

  • Проверьте, настроены ли сайты
  • Определение, какие узлы находятся на каких сайтах.
  • Определяет, какое хранилище доступно каждому узлу
  • Проверяет, установлена ли функция реплики хранилища на каждом узле
  • Создает пул носителей для каждого сайта и идентифицирует его с именем сайта.
  • Создаёт тома данных и журналов в каждом пуле хранилища — по одному на сайт

Следующая команда активирует функцию Storage Spaces Direct на многоузловом кластере. Вы также можете указать понятное имя для пула хранилища, как показано здесь.

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

Ниже приведен пример отключения кэша хранилища в кластере с одним узлом:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Чтобы просмотреть пулы носителей, используйте следующую команду:

Get-StoragePool -CimSession $ClusterName

После создания кластера

Теперь, когда кластер создан, необходимо выполнить другие важные задачи:

Следующие шаги