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

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

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

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

Из этой статьи вы узнаете, как использовать Windows PowerShell для создания гиперконвергентного кластера Azure Stack HCI, использующего Локальные дисковые пространства. Если вы используете мастер создания кластера в Windows Admin Center, см. статью Создание кластера с помощью Windows Admin Center.

Примечание

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

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

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

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

Примечание

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

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

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

Дополнительные сведения о растянутых кластерах см. в статье Общие сведения о растянутых кластерах.

Чтобы протестировать Azure Stack HCI с минимальным количеством дополнительного оборудования или без него, можно проверка руководство по оценке Azure Stack HCI. В этом руководстве описано, как использовать вложенную виртуализацию в Azure Stack HCI на виртуальной машине Azure. Или воспользуйтесь руководством Создание лаборатории на основе виртуальной машины для Azure Stack HCI, чтобы создать собственную частную лабораторную среду с помощью вложенной виртуализации на выбранном сервере, чтобы развернуть виртуальные машины под управлением Azure Stack HCI для кластеризация.

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

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

Использование 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
  • Data Center Bridging
  • Отказоустойчивая кластеризация
  • Файловый сервер
  • Модуль дедупликации данных FS
  • Hyper-V
  • PowerShell для Hyper-V
  • Модуль RsAT-Clustering-PowerShell
  • Модуль RSAT-AD-PowerShell
  • NetworkATC
  • NetworkHUD
  • Ограничение пропускной способности 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", "NetworkHUD", "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", "NetworkHUD", "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. Подготовка дисков

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

Примечание

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

# 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 или более поздней. В противном случае конкретные требования и сведения см. в разделе Требования к сети узла .

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

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

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

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

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

Rename-NetAdapter -Name oldName -NewName newName

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

В этом примере создается намерение, указывающее намерение вычислений и хранилища. Дополнительные примеры намерений см. в статье Упрощение сетей узлов с помощью сетевого 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

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

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

Примечание

В настоящее время atc network atc не настраивает IP-адреса для каких-либо управляемых адаптеров. После Get-NetIntentStatus завершения отчета о состоянии следует добавить 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. Назначение узлов сервера

Далее мы назначим четыре узла сервера соответствующим сайтам. В следующем примере Server1 и Server2 назначаются сайту Site1, а Server3 и 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. Настройка растянутой кластеризации с помощью Network ATC

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

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

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

SiteOverrides

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

 $siteOverride = New-NetIntentSiteOverrides

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

Для определенного siteOverride можно задать следующие свойства: Name, 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в окне PowerShell, $siteOverride2 чтобы убедиться, что все свойства заданы нужным образом.

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

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

Шаг 6. Включение Локальные дисковые пространства

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

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

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

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

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

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

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

Для растянутых кластеров Enable-ClusterStorageSpacesDirect командлет также:

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

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

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

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

Enable-ClusterStorageSpacesDirect -CacheState Disabled

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

Get-StoragePool -CimSession $ClusterName

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

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

Дальнейшие действия