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


Создание кластера 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.

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

Before you begin

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

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

You need the Remote Server Administration Tools (RSAT) cmdlets and PowerShell modules for Hyper-V and Failover Clustering. If the cmdlets and modules aren't already available in your PowerShell session on your management computer, you can add them using the following command: 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

Tip

При выполнении команд PowerShell на компьютере управления может возникнуть ошибка, например WinRM, не может обработать запрос. Чтобы устранить эту проблему, используйте PowerShell для добавления каждого сервера в список надежных узлов на компьютере управления. This list supports wildcards, like Server* for example.

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

To view your Trusted Hosts list, type 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 на каждом сервере кластера. Here are the roles to install:

  • BitLocker
  • Data Center Bridging
  • Failover Clustering
  • Файловый сервер
  • FS-Data-Deduplication module
  • Hyper-V
  • PowerShell для Hyper-V
  • Модуль RSAT-Clustering-PowerShell
  • Модуль RSAT-AD-PowerShell
  • NetworkATC
  • Ограничение пропускной способности SMB
  • Storage Replica (for stretched clusters)

Используйте следующую команду для каждого сервера (если вы подключены через удаленный рабочий стол, опустите -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. Подготовка дисков

Before you enable Storage Spaces Direct, ensure your permanent drives are empty. Выполните следующий скрипт, чтобы удалить старые секции и другие данные.

Примечание.

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

# 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.", которое вы можете спокойно игнорировать. This warning is due to no disks being available for the cluster witness. The cluster witness is created in later steps.

Примечание.

Если серверы используют статические 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. Настройка намерения

In this example, an intent is created that specifies the compute and storage intent. Подробнее о примерах намерений см. в статье "Упрощение сетей узлов с помощью Network ATC".

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

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

The command should immediately return after some initial verification.

Step 4.3: Validate intent deployment

Run the Get-NetIntent cmdlet to see the cluster intent. Если у вас несколько намерений, можно указать Name параметр, чтобы просмотреть сведения только о конкретном намерении.

Get-NetIntent -ClusterName $ClusterName

To see the provisioning status of the intent, run the Get-NetIntentStatus command:

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

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

The status should display success in a few minutes. If the success status doesn't occur or you see a status parameter failure, check the event viewer for issues.

Примечание.

В настоящее время Network ATC не настраивает IP-адреса для никаких из управляемых адаптеров. Once Get-NetIntentStatus reports status completed, you should add IP addresses to the adapters.

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

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

Примечание.

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

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

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

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

Use the Get-ClusterFaultDomain cmdlet to verify that both sites are created for the cluster.

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"

Using the Get-ClusterFaultDomain cmdlet, verify the nodes are in the correct sites.

Get-ClusterFaultDomain -CimSession $ClusterName

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

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

(Get-Cluster).PreferredSite = "Site1"

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

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

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

    • With a dynamic quorum, weighting is decreased from the passive (replicated) site first to ensure that the preferred site survives if all other things are equal. Кроме того, узлы сервера сначала удаляются из пассивного сайта во время перегруппировки после таких событий, как асимметричные сбои сетевого подключения.

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

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

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

После версии 22H2 можно использовать Network ATC для настройки Stretch-кластеризации. Network ATC adds Stretch as an intent type from version 22H2. To deploy an intent with Stretch clustering with Network ATC, run the following command:

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

A stretch intent can also be combined with other intents, when deploying with Network ATC.

SiteOverrides

Based on steps 5.1-5.3 you can add your pre-created sites to your stretch intent deployed with Network ATC. Network ATC handles this using SiteOverrides. Чтобы создать SiteOverride, выполните следующую команду:

 $siteOverride = New-NetIntentSiteOverrides

Once your siteOverride is created, you can set any property for the siteOverride. Make sure that the name property of the siteOverride has the exact same name, as the name your site has in the ClusterFaultDomain. Несоответствие имен между ClusterFaultDomain и siteOverride приводит к тому, что siteOverride не применяется.

The properties you can set for a particular siteOverride are: Name, StorageVlan and 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, чтобы убедиться, что все свойства заданы нужным образом.

Finally, to add one or more siteOverrides to your intent, run:

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

Step 6: Enable Storage Spaces Direct

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

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

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

  • Create data and log volumes: Creates a data volume and a log volume in the storage pool.

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

  • Создание уровней: создает два уровня в качестве уровней по умолчанию. Один из них называется "Емкость", а другой — "Производительность". The cmdlet analyzes the devices and configures each tier with the mix of device types and resiliency.

Для сценария с одним сервером единственным параметром FaultDomainAwarenessDefault является PhysicalDisk. Enable-ClusterStorageSpacesDirect cmdlet detects a single server and automatically configures FaultDomainAwarenessDefault as a PhysicalDisk during enablement.

For stretched clusters, the Enable-ClusterStorageSpacesDirect cmdlet will also:

  • Check to see if sites are set up
  • Определение, какие узлы находятся на каких сайтах.
  • Определяет, какое хранилище доступно каждому узлу
  • Проверяет, установлена ли функция реплики хранилища на каждом узле
  • Создает пул носителей для каждого сайта и идентифицирует его с именем сайта.
  • Creates data and log volumes in each storage pool - one per site

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

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

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

Enable-ClusterStorageSpacesDirect -CacheState Disabled

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

Get-StoragePool -CimSession $ClusterName

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

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

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