Guides Bulletproof Deployments #1 – Hyper-V

Teil 2 von 6

Teil 2: Cluster erstellen

Cluster-Erstellung, Fault Domain Definition und Cluster Aware Updating.

Die vorbereiteten Nodes werden zu einem Windows Failover Cluster zusammengefügt. Dadurch ist das Cluster mit einer eigenen IP Adresse und DNS Namen erreichbar und stellt die Hochverfügbarkeit der darauf laufenden Workloads sicher.

Berechtigungen

Alle Befehle in diesem Teil werden im Kontext eines Domänen-Accounts ausgeführt, der Mitglied der in Teil 1 eingerichteten Hyper-V Admin Gruppe ist und damit lokale Administratorrechte auf allen Nodes besitzt.


Cluster erstellen

Parameter setzen und Cluster validieren
# ===================== ANPASSEN =====================
$Servers = "HV-S2D-N01","HV-S2D-N02" # Hostnamen aller Nodes
$ClusterIP = "192.0.2.100" # Cluster-IP-Adresse
$ClusterName = "HV-S2D-CL01" # Cluster-Name
# =================== NICHT ANPASSEN =================
Test-Cluster -Node $Servers -Include "Storage Spaces Direct","Inventory","Network","System Configuration","Hyper-V Configuration"

Test-Cluster erzeugt einen Validierungsbericht. Fehler müssen vor dem nächsten Schritt behoben sein. Warnungen sind je nach Kontext tolerierbar, aber dokumentieren.

Cluster erstellen
New-Cluster -Name $ClusterName -Node $Servers -StaticAddress $ClusterIP

Fault Domain

Fault Domains legen fest, wie die Nodes physisch verteilt sind: nach Rack, Standort oder Brandabschnitt. Ich empfehle die Konfiguration auch bei nur einem Rack: die Topologie ist dann klar definiert und Ausfälle werden korrekt eingeordnet.

S2D Campus Cluster

Ab Windows Server 2025 wird der S2D Campus Cluster unterstützt. Für das Deployment gelten strenge Anforderungen wie z.B.:

  • Dezember-Update KB5072033 muss auf allen Nodes installiert sein
  • Genau zwei Rack-Fault-Domains nicht mehr, nicht weniger
  • Alle Drives müssen All-Flash (SSD/NVMe) sein
  • Layer-2 Storage Netzwerk mit >= 1ms Roundtrip, DCBX Konfiguration und notwendiger Bandbreite.
  • Fault Domain Konfiguration muss zwingend vor Enable-ClusterS2D gesetzt werden

Mehr dazu im Microsoft Techcommunity-Blog.

Die Fault Domain kann entweder per XML Datei oder über PowerShell Befehle definiert werden. Mehr dazu in der Microsoft-Dokumentation. Das folgende Beispiel zeigt eine Topologie mit einem Standort, zwei Racks und je zwei Nodes:

Fault Domain XML setzen
# ===================== ANPASSEN =====================
$SiteName = "HQ" # Name des Standorts
$SiteOrt = "Entenhausen" # Physischer Standort
$RackName1 = "RZ-01" # Name des ersten Racks
$RackName2 = "RZ-02" # Name des zweiten Racks
$N1 = "HV-S2D-N01" # Rack 1 – Node 1
$N2 = "HV-S2D-N02" # Rack 1 – Node 2
$N3 = "HV-S2D-N03" # Rack 2 – Node 1
$N4 = "HV-S2D-N04" # Rack 2 – Node 2
# =================== NICHT ANPASSEN =================
Invoke-Command -ComputerName $ClusterName -ScriptBlock {
Set-ClusterFaultDomainXML -XML @"
<Topology>
<Site Name="$using:SiteName" Location="$using:SiteOrt">
<Rack Name="$using:RackName1">
<Node Name="$using:N1" />
<Node Name="$using:N2" />
</Rack>
<Rack Name="$using:RackName2">
<Node Name="$using:N3" />
<Node Name="$using:N4" />
</Rack>
</Site>
</Topology>
"@
}

Witness konfigurieren (Cloud Witness)

Das Cluster-Quorum verhindert Split-Brain-Szenarien. Er entscheidet bei einer gleichmäßigen Stimmenverteilung (z. B. 2 von 4 Nodes ausgefallen), welche Seite weiterläuft. Die Cloud Witness nutzt ein Azure Storage Account und ist die empfohlene Variante.

Voraussetzung

Für den Cloud Witness wird ein Azure Storage Account benötigt. Den Account-Namen und den Access Key findest du im Azure Portal unter Storage Account → Sicherheit + Netzwerk → Zugriffsschlüssel.

Cloud Witness konfigurieren
Set-ClusterQuorum -CloudWitness -Cluster $ClusterName -AccountName <StorageAccountName> -AccessKey <StorageAccountAccessKey>

Cluster Aware Updating

CAU ist der Weg wie Hyper-V Cluster Updates erhalten. Dabei werden die Workloads automatisch von einem Node auf einen anderen verschoben, der Node pausiert, aktualisiert und neu gestartet. Kein manueller Eingriff und kein Ausfall der Workloads während des Updates.

Voraussetzung

Dem AD Clusterobjekt muss zuvor Schreibzugriff auf die OU eingerichtet werden. Microsoft Learn - CAU Permissions

CAU-Rolle erstellen
# ===================== ANPASSEN =====================
$CAURoleName = "HV-S2D-CAU01" # Name der CAU-Rolle (wird als virtuelles Computerobjekt in AD angelegt)
# =================== NICHT ANPASSEN =================
Add-CauClusterRole `
-ClusterName $ClusterName `
-GroupName $CAURoleName `
-VirtualComputerObjectName $CAURoleName `
-CauPluginName Microsoft.WindowsUpdatePlugin `
-CauPluginArguments @{ 'IncludeRecommendedUpdates' = 'False' } `
-MaxFailedNodes 0 `
-MaxRetriesPerNode 3 `
-StartDate (Get-Date) `
-DaysOfWeek 4 `
-WeeksOfMonth @(3) `
-RequireAllNodesOnline `
-EnableFirewallRules `
-Force `
-Verbose
# Self-Updating deaktivieren
Disable-CauClusterRole -ClusterName $ClusterName -Force