Skapa ett Azure Stack HCI-kluster med hjälp av Windows PowerShell

Gäller för: Azure Stack HCI, version 22H2

Important

Azure Stack HCI är nu en del av Azure Local. Äldre versioner av Azure Stack HCI, till exempel 22H2, fortsätter dock att referera till Azure Stack HCI och återspeglar inte namnändringen. Läs mer.

Warning

Distributionsinstruktionerna i den här artikeln gäller för en äldre version, Azure Stack HCI, version 22H2. För nya distributioner rekommenderar vi att du använder den senaste allmänt tillgängliga versionen av Azure Local i Om Azure Local distribution.

I den här artikeln lär du dig hur du använder Windows PowerShell för att skapa ett Azure Stack hyperkonvergerat HCI-kluster som använder Storage Spaces Direct. Om du hellre använder guiden Skapa kluster i Windows Admin Center för att skapa klustret kan du läsa Skapa klustret med Windows Admin Center.

Anmärkning

Om du gör en enskild serverinstallation av Azure Stack HCI 21H2 använder du PowerShell för att skapa klustret.

Du kan välja mellan två klustertyper:

  • Standardkluster med en eller två servernoder, som alla finns på en enda plats.
  • Utsträckt kluster med minst fyra servernoder som sträcker sig över två platser, med två noder per plats.

För scenariot med en enskild server utför du samma instruktioner för den ena servern.

Anmärkning

Stretchkluster stöds inte i en enda serverkonfiguration.

I den här artikeln skapar vi ett exempelkluster med namnet Cluster1 som består av fyra servernoder med namnet Server1, Server2, Server3 och Server4.

I scenariot med stretchkluster använder vi ClusterS1 som namn och använder samma fyra servernoder som sträcker sig över platserna Plats1 och Plats2.

Mer information om stretchkluster finns i Översikt över stretchkluster.

Innan du börjar

Innan du börjar kontrollerar du att:

Använda Windows PowerShell

Du kan antingen köra PowerShell lokalt i en RDP-session på en värdserver eller köra PowerShell via fjärranslutning från en hanteringsdator. Den här artikeln beskriver fjärralternativet.

När du kör PowerShell från en hanteringsdator ska du inkludera parametern -Name eller -Cluster med namnet på den server eller det kluster som du hanterar. Dessutom kan du behöva ange det fullständigt kvalificerade domännamnet (FQDN) när du använder parametern -ComputerName för en servernod.

Du behöver RSAT-cmdletar (Remote Server Administration Tools) och PowerShell-moduler för Hyper-V och redundanskluster. Om cmdletarna och modulerna inte redan är tillgängliga i PowerShell-sessionen på hanteringsdatorn kan du lägga till dem med hjälp av följande kommando: Add-WindowsFeature RSAT-Clustering-PowerShell.

Steg 1: Konfigurera servrarna

Anslut först till var och en av servrarna, anslut dem till en domän (samma domän som hanteringsdatorn finns i) och installera nödvändiga roller och funktioner.

Steg 1.1: Anslut till servrarna

Om du vill ansluta till servrarna måste du först ha nätverksanslutning, vara ansluten till samma domän eller en fullständigt betrodd domän och ha lokal administrativ behörighet till servrarna.

Öppna PowerShell och använd antingen det fullständigt kvalificerade domännamnet eller IP-adressen för den server som du vill ansluta till. Du uppmanas att ange ett lösenord när du har kört följande kommando på varje server.

I det här exemplet förutsätter vi att servrarna heter Server1, Server2, Server3 och Server4:

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

Här är ett annat exempel på hur du gör samma sak:

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

När du kör PowerShell-kommandon från hanteringsdatorn kan det uppstå ett fel som om WinRM inte kan bearbeta begäran. Åtgärda detta genom att använda PowerShell för att lägga till varje server i listan Betrodda värdar på hanteringsdatorn. Den här listan har stöd för jokertecken, som Server*, till exempel.

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

Om du vill visa listan Betrodda värdar skriver du Get-Item WSMAN:\Localhost\Client\TrustedHosts.

Om du vill tömma listan skriver du Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Steg 1.2: Anslut domänen och lägg till domänkonton

I föregående steg anslöt du till varje servernod med det lokala administratörskontot <ServerName>\Administrator.

Om du vill fortsätta måste du ansluta servrarna till en domän och använda det domänkonto som finns i den lokala gruppen Administratörer på varje server.

Använd cmdleten Enter-PSSession för att ansluta till varje server och köra följande cmdlet och ersätta servernamnet, domännamnet och domänautentiseringsuppgifterna:

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

Om ditt administratörskonto inte är medlem i gruppen Domänadministratörer lägger du till ditt administratörskonto i den lokala gruppen Administratörer på varje server – eller ännu bättre lägger du till den grupp som du använder för administratörer. Du kan använda följande kommando för att göra det:

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

Steg 1.3: Installera roller och funktioner

Nästa steg är att installera nödvändiga Windows roller och funktioner på varje server för klustret. Här är de roller som ska installeras:

  • BitLocker
  • Datacenternätverksbryggning
  • Failoverkluster
  • Filserver
  • FS-dataavdupliceringsmodul
  • Hyper-V
  • Hyper-V PowerShell
  • RSAT-Clustering-PowerShell-modul
  • RSAT–AD-PowerShell modul
  • NetworkATC
  • Bandbreddsgräns för SMB
  • Storage Replica (för stretchkluster)

Använd följande kommando för varje server (om du är ansluten via Fjärrskrivbord utelämna parametern -ComputerName här och i efterföljande kommandon):

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

Om du vill köra kommandot på alla servrar i klustret samtidigt använder du följande skript och ändrar listan med variabler i början för att passa din miljö:

# 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
}

Starta sedan om alla servrar:

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

Steg 2: Förberedelse för klusterkonfiguration

Kontrollera sedan att servrarna är redo för klustring.

Som en sanskontroll bör du överväga att köra följande kommandon för att se till att servrarna inte redan tillhör ett kluster:

Använd Get-ClusterNode för att visa alla noder:

Get-ClusterNode

Använd Get-ClusterResource för att visa alla klusternoder:

Get-ClusterResource

Använd Get-ClusterNetwork för att visa alla klusternätverk:

Get-ClusterNetwork

Steg 2.1: Förbereda enheter

Innan du aktiverar Storage Spaces Direct kontrollerar du att dina permanenta enheter är tomma. Kör följande skript för att ta bort alla gamla partitioner och andra data.

Anmärkning

Undanta flyttbara enheter som är anslutna till en servernod från skriptet. Om du till exempel kör det här skriptet lokalt från en servernod vill du inte rensa den flyttbara enhet som du kanske använder för att distribuera klustret.

# 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

Steg 2.2: Testa klusterkonfiguration

I det här steget kontrollerar du att servernoderna är korrekt konfigurerade för att skapa ett kluster. Cmdleten Test-Cluster används för att köra tester för att kontrollera att konfigurationen är lämplig för att fungera som ett hyperkonvergerat kluster. I följande exempel används parametern -Include med de specifika kategorier av tester som angetts för att säkerställa att rätt tester ingår i valideringen.

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

Steg 3: Skapa klustret

Nu är du redo att skapa ett kluster med de servernoder som du verifierade i föregående steg.

När du skapar klustret kan du få en varning med följande lydelse: "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." Du kan lugnt ignorera varningen. Den här varningen beror på att inga diskar är tillgängliga för klustervittnet. Klustervittnet skapas i senare steg.

Anmärkning

Om servrarna använder statiska IP-adresser ändrar du följande kommando för att återspegla den statiska IP-adressen genom att lägga till följande parameter och ange IP-adressen: -StaticAddress <X.X.X.X>;.

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

När klustret har skapats kan det ta lite tid innan klusternamnet replikeras via DNS i hela domänen, särskilt om arbetsgruppsservrar nyligen har lagts till i služba Active Directory. Även om klustret kan visas i Windows Admin Center kanske det inte är tillgängligt att ansluta till ännu.

En bra kontroll för att säkerställa att alla klusterresurser är online:

Get-Cluster -Name $ClusterName | Get-ClusterResource

Om det inte går att lösa klustret efter en tid kan du i de flesta fall ansluta med namnet på en av de klustrade servrarna i stället för klusternamnet.

Steg 4: Konfigurera värdnätverk

Microsoft rekommenderar att du använder Network ATC för att distribuera värdnätverk om du kör Azure Stack HCI version 21H2 eller senare. Annars kan du läsa mer i Krav för värdnätverk för specifika krav och information.

Network ATC kan automatisera driftsättningen av den avsedda nätverkskonfigurationen om du anger en eller flera intenttyper för dina nätverkskort. Mer information om specifika avsiktstyper finns i: Nätverkstrafiktyper.

Steg 4.1: Granska fysiska adaptrar

Kör Get-NetAdapter på en av klusternoderna för att granska de fysiska adaptrarna. Se till att varje nod i klustret har fysiska adaptrar med samma namn och att de rapporterar status som 'Up'.

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

Om namnet på en fysisk adapter varierar mellan noder i klustret kan du byta namn på den med Rename-NetAdapter.

Rename-NetAdapter -Name oldName -NewName newName

Steg 4.2: Konfigurera en avsikt

I det här exemplet skapas en avsikt som anger avsikten för beräkning och lagring. Mer avsiktsexempel finns i Förenkla värdnätverk med Network ATC .

Kör följande kommando för att lägga till avsiktstyperna för lagring och beräkning i pNIC01 och pNIC02. Observera att vi anger parametern -ClusterName .

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

Kommandot bör omedelbart returneras efter en inledande verifiering.

Steg 4.3: Verifiera avsiktsdistribution

Kör cmdleten Get-NetIntent för att se klusteravsikten. Om du har mer än en avsikt kan du ange parametern Name för att endast se information om en specifik avsikt.

Get-NetIntent -ClusterName $ClusterName

Kör kommandot Get-NetIntentStatus för att se etableringsstatus för intentet:

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Observera statusparametern som visar Etablering, Validering, Lyckades, Fel.

Statusen bör visa framgång om några minuter. Om lyckad status inte visas eller om du ser ett fel i statusparametern kontrollerar du Händelsevisaren för problem.

Anmärkning

För närvarande konfigurerar Network ATC inte IP-adresser för någon av sina hanterade adaptrar. När Get-NetIntentStatus rapporterar statusen Slutförd bör du lägga till IP-adresser till adaptrarna.

Steg 5: Konfigurera platser (utsträckt kluster)

Den här uppgiften gäller endast om du skapar ett utsträckt kluster mellan två platser med minst två servrar på varje plats.

Anmärkning

Om du har konfigurerat služba Active Directory webbplatser och tjänster i förväg behöver du inte skapa webbplatserna manuellt enligt beskrivningen i nästa avsnitt.

Steg 5.1: Skapa webbplatser

I följande cmdlet är FaultDomain bara ett annat namn för en webbplats. I det här exemplet används "ClusterS1" som namnet på det utsträckta klustret.

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

Använd cmdleten Get-ClusterFaultDomain för att kontrollera att båda platserna har skapats för klustret.

Get-ClusterFaultDomain -CimSession $ClusterName

Steg 5.2: Tilldela servernoder

Därefter tilldelar vi de fyra servernoderna till deras respektive platser. I följande exempel tilldelas Server1 och Server2 till Site1, medan Server3 och Server4 tilldelas till Site2.

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

Get-ClusterFaultDomain Kontrollera att noderna finns på rätt platser med hjälp av cmdleten.

Get-ClusterFaultDomain -CimSession $ClusterName

Steg 5.3: Ange en önskad webbplats

Du kan också definiera en global föredragen webbplats, vilket innebär att angivna resurser och grupper måste köras på önskad plats. Den här inställningen kan definieras på platsnivå med hjälp av följande kommando:

(Get-Cluster).PreferredSite = "Site1"

Att ange en föredragen plats för utsträckta kluster har följande fördelar:

  • Kallstart – under en kallstart placeras virtuella datorer på önskad plats

  • Kvorumröstning

    • Med ett dynamiskt kvorum minskas viktningen från den passiva (replikerade) platsen först för att säkerställa att den föredragna platsen överlever om alla andra saker är lika. Dessutom rensas servernoder från den passiva platsen först under omgruppering efter händelser som asymmetriska nätverksanslutningsfel.

    • Om klustervittnet inte kan kontaktas under en kvorumdelning av två platser väljs den föredragna webbplatsen automatiskt för att vinna. Servernoderna i den passiva siten lämnar sedan klustret, vilket gör att klustret kan överleva en samtidig förlust av 50 % av rösterna.

Den önskade platsen kan också konfigureras på klusterroll- eller gruppnivå. I det här fallet kan en annan önskad plats konfigureras för varje virtuell datorgrupp som gör att en plats kan vara aktiv och föredras för specifika virtuella datorer.

Steg 5.4: Konfigurera Stretch Clustering med Network ATC

Efter version 22H2 kan du använda Network ATC för att konfigurera Stretch-klustring. Network ATC lägger till Stretch som en avsiktstyp från version 22H2. Så här distribuerar du en intent med Stretch-klustring med Network ATC, kör följande kommando:

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

En utökad avsikt kan också kombineras med andra avsikter, när du distribuerar med Network ATC.

Platsåsidosättningar

Utifrån steg 5.1–5.3 kan du lägga till dina i förväg skapade platser i din stretch intent som har distribuerats med Network ATC. Network ATC hanterar detta med SiteOverrides. Om du vill skapa en SiteOverride kör du:

 $siteOverride = New-NetIntentSiteOverrides

När siteOverride har skapats kan du ange valfri egenskap för siteOverride. Kontrollera att namnegenskapen för siteOverride har exakt samma namn som namnet som din webbplats har i ClusterFaultDomain. Namnmatchningsfel mellan ClusterFaultDomain och siteOverride resulterar i att siteOverride inte tillämpas.

De egenskaper som du kan ange för en viss siteOverride är: Namn, StorageVlan och StretchVlan. Du kan till exempel skapa 2 siteOverrides för dina två platser - site1 och site2 med hjälp av:

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

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

Du kan köra $siteOverride1, $siteOverride2 i PowerShell-fönstret för att se till att alla dina egenskaper har angetts på önskat sätt.

Slutligen, för att lägga till en eller flera siteOverrides till din intent, kör:

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

Steg 6: Aktivera Storage Spaces Direct

När du har skapat klustret använder du cmdletenEnable-ClusterStorageSpacesDirect, som aktiverar Storage Spaces Direct och gör följande automatiskt:

  • Skapa en lagringspool: Skapar en lagringspool för klustret som har ett namn som "Kluster1-lagringspool".

  • Skapa en disk för klusterprestandahistorik: Skapar en virtuell disk för klusterprestandahistorik i lagringspoolen.

  • Skapa data- och loggvolymer: Skapar en datavolym och en loggvolym i lagringspoolen.

  • Konfigurera cache för Storage Spaces Direct: Om det finns mer än en medietyp (enhetstyp) tillgänglig för Storage Spaces Direct används den snabbaste som cacheenheter (för läsning och skrivning i de flesta fall).

  • Skapa nivåer: Skapar två nivåer som standardnivåer. Den ena kallas "Kapacitet" och den andra kallas "Prestanda". Cmdleten analyserar enheterna och konfigurerar varje nivå med rätt kombination av enhetstyper och resiliens.

För scenariot med en enda server är PhysicalDisk det enda värdet för FaultDomainAwarenessDefault. Enable-ClusterStorageSpacesDirect cmdlet identifierar en enskild server och konfigurerar automatiskt FaultDomainAwarenessDefault som en PhysicalDisk under aktiveringen.

För utsträckta kluster kommer cmdleten Enable-ClusterStorageSpacesDirect också att:

  • Kontrollera om webbplatser har konfigurerats
  • Avgöra vilka noder som finns på vilka platser
  • Avgör vilken lagring varje nod har tillgänglig
  • Kontrollerar om funktionen Storage Replica är installerad på varje nod
  • Skapar en lagringspool för varje plats och identifierar den med namnet på platsen
  • Skapar data och loggvolymer i varje lagringspool – en per plats

Följande kommando aktiverar Storage Spaces Direct i ett kluster med flera noder. Du kan också ange ett eget namn för en lagringspool, som du ser här:

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

Här är ett exempel på hur du inaktiverar lagringscacheminnet i ett kluster med en nod:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Om du vill se lagringspoolerna använder du följande kommando:

Get-StoragePool -CimSession $ClusterName

När du har skapat klustret

Nu när klustret har skapats finns det andra viktiga uppgifter som du behöver utföra:

Nästa steg