Fehlerdomänenunterstützung
Failoverclustering ermöglicht die Zusammenarbeit mehrerer Server, um hohe Verfügbarkeit zu bieten – oder anders ausgedrückt, um Knotenfehlertoleranz zu bieten. Unternehmen von heute verlangen jedoch immer mehr Verfügbarkeit von ihrer Infrastruktur. Um cloudähnliche Betriebszeit zu erreichen, ist auch der Schutz bei sehr unwahrscheinlichen Vorfällen wie z.B. Gehäuse- und Rackausfällen oder Naturkatastrophen erforderlich. Aus diesem Grund wurde durch Failoverclustering in Windows Server 2016 auch die Fehlertoleranz für Gehäuse, Rack und Standortfehler eingeführt.
Fehlerdomänen und Fehlertoleranz
Fehlerdomänen und Fehlertoleranz sind eng miteinander verwandte Konzepte. Eine Fehlerdomäne ist eine Reihe von Hardwarekomponenten, die einen gemeinsamen Single Point of Failure haben. Um ein bestimmtes Niveau an Fehlertoleranz zu erzielen, benötigen Sie mehrere Fehlerdomänen auf dieser Ebene. Beispielsweise setzt Rackfehlertoleranz voraus, dass Ihre Server und Daten auf mehrere Racks verteilt sind.
Dieses kurze Video bietet eine Übersicht über Fehlerdomänen in Windows Server 2016.
Fehlerdomänenerkennung in Windows Server 2019
Fehlerdomänenerkennung ist in Windows Server 2019 verfügbar, ist jedoch standardmäßig deaktiviert und muss über die Windows-Registrierung aktiviert werden.
Um die Fehlerdomänenerkennung in Windows Server 2019 zu aktivieren, wechseln Sie zur Windows-Registrierung, und legen Sie (Get-Cluster) fest. AutoAssignNodeSite-Registrierungsschlüssel auf 1.
(Get-Cluster).AutoAssignNodeSite=1
Um die Fehlerdomänenerkennung in Windows 2019 zu deaktivieren, wechseln Sie zur Windows-Registrierung, und legen Sie (Get-Cluster) fest. AutoAssignNodeSite-Registrierungsschlüssel auf 0.
(Get-Cluster).AutoAssignNodeSite=0
Vorteile
„Speicherplätze“ einschließlich „Direkte Speicherplätze“ verwendet Fehlerdomänen, um die Datensicherheit zu maximieren. Die Resilienz in „Speicherplätze“ ist konzeptionell wie verteiltes, softwaredefiniertes RAID. Mehrere Kopien aller Daten werden synchron beibehalten, und wenn bei einem Hardwareausfall eine Kopie verloren geht, werden andere zum Wiederherstellen der Resilienz erneut kopiert. Um die bestmögliche Resilienz zu erreichen, sollten Kopien in separaten Fehlerdomänen beibehalten werden.
Der Integritätsdienst verwendet Fehlerdomänen, um hilfreichere Warnungen bereitzustellen. Jeder Fehlerdomäne können Speicherortmetadaten zugeordnet werden, die automatisch in alle nachfolgenden Warnungen aufgenommen werden. Diese Deskriptoren können Vorgänge oder Wartungspersonal unterstützen und Fehler reduzieren, indem sie Hardware eindeutig machen.
Stretch-Clustering verwendet Fehlerdomänen für die Speicheraffinität. Stretch-Clustering ermöglicht weit entfernten Servern, einem gemeinsamen Cluster beitreten. Für optimale Leistung sollten Anwendungen oder virtuelle Computer auf Servern ausgeführt werden, die sich in der Nähe derer befinden, die ihnen Speicherplatz bereitstellen. Die Fehlerdomänenerkennung ermöglicht diese Speicheraffinität.
Ebenen der Fehlerdomänen
Es gibt vier kanonische Ebenen von Fehlerdomänen – Standort, Rack, Gehäuse und Knoten. Knoten werden automatisch erkannt; jede zusätzliche Ebene ist optional. Wenn Ihre Bereitstellung beispielsweise keine Blattserver verwendet, ist die Chassisebene möglicherweise nicht sinnvoll für Sie.
Verwendung
Sie können PowerShell- oder XML-Markup verwenden, um Fehlerdomänen anzugeben. Beide Ansätze sind äquivalent und bieten vollständige Funktionalität.
Wichtig
Geben Sie Fehlerdomänen wenn möglich an, bevor Sie „Direkte Speicherplätze“ aktivieren. Dies ermöglicht die Vorbereitung von Pool, Ebenen und Einstellungen wie Resilienz und Anzahl der Spalten für Gehäuse- oder Rackfehlertoleranz durch automatische Konfiguration. Wenn Pool und Volumes erstellt sind, werden Daten nicht nachträglich in Reaktion auf Änderungen der Fehlerdomänentopologie verschoben. Um nach dem Aktivieren von „Direkte Speicherplätze“ Knoten zwischen Gehäusen oder Racks zu verschieben, sollten Sie zuerst den Knoten sowie seine Laufwerke mit Remove-ClusterNode -CleanUpDisks
aus dem Pool entfernen.
Definieren von Fehlerdomänen mit PowerShell
Windows Server 2016 führt die folgenden Cmdlets ein, um mit Fehlerdomänen zu arbeiten:
Get-ClusterFaultDomain
Set-ClusterFaultDomain
New-ClusterFaultDomain
Remove-ClusterFaultDomain
In diesem kurzen Video wird die Verwendung von PowerShell-Befehlen der Clusterfehlerdomäne veranschaulicht.
Verwenden Sie Get-ClusterFaultDomain
zur Anzeige der aktuellen Fehlerdomänentopologie. Hier werden alle Knoten im Cluster sowie alle Chassis, Racks oder Standorte aufgelistet, die Sie erstellt haben. Sie können mit Parametern wie -Type oder -Name filtern, aber diese sind nicht erforderlich.
Get-ClusterFaultDomain
Get-ClusterFaultDomain -Type Rack
Get-ClusterFaultDomain -Name "server01.contoso.com"
Verwenden Sie New-ClusterFaultDomain
, um neue Chassis, Racks oder Standorte zu erstellen. Die -Type
- und -Name
-Parameter sind erforderlich. Die möglichen Werte für -Type
lauten Chassis
, Rack
und Site
. Der -Name
kann eine beliebige Zeichenfolge sein. (Für Fehlerdomänen des Typs Node
muss der Name der tatsächliche Knotenname sein, wie automatisch festgelegt).
New-ClusterFaultDomain -Type Chassis -Name "Chassis 007"
New-ClusterFaultDomain -Type Rack -Name "Rack A"
New-ClusterFaultDomain -Type Site -Name "Shanghai"
Wichtig
Windows Server kann nicht überprüfen und überprüft nicht, ob alle von Ihnen erstellten Fehlerdomänen eine Entsprechung in der realen, physischen Welt haben. (Dies mag offensichtlich klingen, aber es ist wichtig zu verstehen.) Wenn sich in der realen Welt alle Ihre Knoten in einem einzigen Rack befinden, bietet das Erstellen von zwei -Type Rack
-Fehlerdomänen in der Software keine „magische“ Fehlertoleranz im Rack. Sie sind dafür verantwortlich, sicherzustellen, dass die Topologie, die Sie mithilfe dieser Cmdlets erstellen, der tatsächlichen Anordnung der Hardware entspricht.
Verwenden Sie Set-ClusterFaultDomain
, um eine Fehlerdomäne in eine andere zu verschieben. Die Begriffe „übergeordnet“ und „untergeordnet“ werden häufig zur Beschreibung dieser geschachtelten Beziehung verwendet. Die -Name
- und -Parent
-Parameter sind erforderlich. Geben Sie in -Name
den Namen der Fehlerdomäne an, die verschoben wird, und geben Sie in -Parent
den Namen des Ziels an. Um mehrere Fehlerdomänen gleichzeitig zu verschieben, listen Sie ihre Namen auf.
Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent "Rack A"
Set-ClusterFaultDomain -Name "Rack A", "Rack B", "Rack C", "Rack D" -Parent "Shanghai"
Wichtig
Bei der Verschiebung von Fehlerdomänen werden ihre untergeordneten Objekte mit ihnen verschoben. Wenn Rack A im obigen Beispiel server01.contoso.com übergeordnet ist, muss letztere nicht separat an den Standort Shanghai verschoben werden – sie ist schon durch das übergeordnete Element dort, wie in der realen Welt.
Die Beziehungen zwischen übergeordneten und untergeordneten Elementen in der Ausgabe von Get-ClusterFaultDomain
werden in den Spalten ParentName
und ChildrenNames
angezeigt.
Sie können auch mit Set-ClusterFaultDomain
bestimmte andere Eigenschaften von Fehlerdomänen ändern. Beispielsweise können Sie optional Metadaten des Typs -Location
oder -Description
für jede Fehlerdomäne bereitstellen. Wenn angegeben, werden diese Informationen in Hardwarewarnungen des Integritätsdiensts einbezogen. Sie können Fehlerdomänen auch mithilfe des Parameters -NewName
umbenennen. Benennen Sie Fehlerdomänen des Typs Node
nicht um.
Set-ClusterFaultDomain -Name "Rack A" -Location "Building 34, Room 4010"
Set-ClusterFaultDomain -Type Node -Description "Contoso XYZ Server"
Set-ClusterFaultDomain -Name "Shanghai" -NewName "China Region"
Verwenden Sie Remove-ClusterFaultDomain
zum Entfernen von Chassis, Racks oder Standorten, die Sie erstellt haben. Der -Name
-Parameter ist erforderlich. Sie können keine Fehlerdomäne entfernen, die untergeordnete Elemente enthält – entweder entfernen Sie zunächst die untergeordneten Elemente, oder Sie verschieben sie mit Set-ClusterFaultDomain
nach außen. Um eine Fehlerdomäne aus allen anderen Fehlerdomänen nach außen zu verschieben, legen Sie -Parent
auf eine leere Zeichenfolge ("") fest. Sie können Fehlerdomänen des Typs Node
nicht entfernen. Um mehrere Fehlerdomänen gleichzeitig zu entfernen, listen Sie ihre Namen auf.
Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent ""
Remove-ClusterFaultDomain -Name "Rack A"
Definieren von Fehlerdomänen mit XML-Markup
Fehlerdomänen können mithilfe einer XML-Syntax angegeben werden. Es wird empfohlen, Ihren bevorzugten Text-Editor wie Visual Studio Code (hier kostenlos verfügbar) oder Editor zu verwenden, um ein XML-Dokument zu erstellen, das Sie speichern und wiederverwenden können.
In diesem kurzen Video wird die Verwendung von XML zum Angeben von Fehlerdomänen beim Failoverclustering veranschaulicht.
Führen Sie in PowerShell das folgende Cmdlet aus: Get-ClusterFaultDomainXML
. Dadurch wird die aktuelle Fehlerdomänenspezifikation für den Cluster im XML-Format zurückgegeben. Dies spiegelt jeden ermittelten <Node>
, der in öffnende und schließende Tags des Typs <Topology>
umschlossen ist.
Führen Sie Folgendes aus, um diese Ausgabe in einer Datei zu speichern.
Get-ClusterFaultDomainXML | Out-File <Path>
Öffnen Sie die Datei, und fügen Sie Tags für <Site>
, <Rack>
und <Chassis>
hinzu, um anzugeben, wie diese Knoten auf Standorte, Racks und Chassis verteilt sind. Jedes Tag muss durch einen eindeutigen Name identifiziert werden. Für Knoten müssen Sie den Knotennamen als standardmäßig aufgefüllt beibehalten.
Wichtig
Während alle zusätzlichen Tags optional sind, muss die transitive Hierarchie Standort > Rack > Gehäuse > Knoten beibehalten und ordnungsgemäß geschlossen werden.
Zusätzlich zum Namen können jedem Tag Freiform Location="..."
und Description="..."
Deskriptoren hinzugefügt werden.
Beispiel: zwei Standorte, jeweils ein Rack
<Topology>
<Site Name="SEA" Location="Contoso HQ, 123 Example St, Room 4010, Seattle">
<Rack Name="A01" Location="Aisle A, Rack 01">
<Node Name="Server01" Location="Rack Unit 33" />
<Node Name="Server02" Location="Rack Unit 35" />
<Node Name="Server03" Location="Rack Unit 37" />
</Rack>
</Site>
<Site Name="NYC" Location="Regional Datacenter, 456 Example Ave, New York City">
<Rack Name="B07" Location="Aisle B, Rack 07">
<Node Name="Server04" Location="Rack Unit 20" />
<Node Name="Server05" Location="Rack Unit 22" />
<Node Name="Server06" Location="Rack Unit 24" />
</Rack>
</Site>
</Topology>
Beispiel: zwei Chassis-Blattserver
<Topology>
<Rack Name="A01" Location="Contoso HQ, Room 4010, Aisle A, Rack 01">
<Chassis Name="Chassis01" Location="Rack Unit 2 (Upper)" >
<Node Name="Server01" Location="Left" />
<Node Name="Server02" Location="Right" />
</Chassis>
<Chassis Name="Chassis02" Location="Rack Unit 6 (Lower)" >
<Node Name="Server03" Location="Left" />
<Node Name="Server04" Location="Right" />
</Chassis>
</Rack>
</Topology>
Um die neue Fehlerdomänenspezifikation festzulegen, speichern Sie Ihren XML-Code, und führen Sie Folgendes in PowerShell aus.
$xml = Get-Content <Path> | Out-String
Set-ClusterFaultDomainXML -XML $xml
In diesem Leitfaden werden nur zwei Beispiele vorgestellt, aber die Tags <Site>
, <Rack>
, <Chassis>
und <Node>
können auf verschiedene Arten gemischt und kombiniert werden, um die physische Topologie Ihrer Bereitstellung, wie sie auch aussehen mag, widerzuspiegeln. Wir hoffen, dass diese Beispiele die Flexibilität dieser Tags und den Wert der Freiformpositionsdeskriptoren zu ihrer Unterscheidung veranschaulichen.
Optional: Speicherort- und Beschreibungsmetadaten
Sie können optionale Standort- oder Beschreibungsmetadaten für jede Fehlerdomäne bereitstellen. Wenn angegeben, werden diese Informationen in Hardwarewarnungen des Integritätsdiensts einbezogen.
In diesem kurzen Video wird der Wert des Hinzufügens von Standortdeskriptoren zu Fehlerdomänen veranschaulicht.