Dateiserver… hochverfügbar und sicher
Dateiserver kennen wir… Rechtsklick, Freigabe, fertig…
Das kann auch meine Mama – spannend wird es wenn die Dateien verfügbar bleiben sollen wenn ich meinen Serverraum anzünde… oder Updates installiere und neu starte.
Ich finde hier eine Kombination aus dem klassischen Windows-Failovercluster und Storage Replica echt großartig.
Der Hauptzweck des Failoverclusters ist Hochverfügbarkeit – beide (oder mehr) Server teilen sich ein iSCSI (oder Fiberchannel, FCoE, …) Speicher und stellen diesen über einen gemeinsamen vituellen Servernamen zur Verfügung.
Der Hauptzweck von Storage Replica ist einen passiven Backupspiegel zu haben (ausgenommen Stretched Cluster)
Der Stretched Cluster traue ich noch nicht ganz über den Weg, ich habe gerne die Kontrolle darüber, dass es nur einen aktiven Datenpfad gibt, der von Hand geschwenkt wird. Das Risiko, A und B könnten auseinanderlaufen macht mich doch zu unruhig.
Ist also Hochverfügbarkeit nicht erforderlich und man möchte nur auf einen anderen Standort replizieren, wäre die Server zu Server Replikation der richtige Weg; spielt Hochverfügbarkeit eine Rolle bitte bei Schritt 2 fortfahren und die Mutigen, die es Stretchen wollen… ab zur 3:
1. Server zu Server Replikation
Nachteil: Failover relativ aufwendig, somit monatliche Probleme beim Patchen
Beide Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.
Es werden 3 Volumes pro Server benötigt:
- Betriebssystem
- Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
- Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher
Zuerst muss via
-
Diskpart
-
List disk
-
Select disk 1
-
Create partition msr size=128
-
Select disk 2
-
Create partition msr size=128
-
Exit
Auf beiden Servern eine MSR Partition angelegt werden, danach kann via „compmgmt.msc“ ganz normal die Partitionierung vorgenommen werden.
Ob ReFS oder NTFS verwendet wird ist abhängig vom Einsatzzweck; beides ist möglich.
Die Rolle Dateiserver und das Feature Speicherreplikat müssen über den Servermanager installiert werden:
Folgende Dienste bzw. Ports müssen in der Firewall freigegeben werden:
- ICMP
- SMB- Ports 445 5445
- Windows Remoteverwaltung Port 5985
Dies kann via CMD mit folgenden Befehlen durchgeführt werden:
netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (SMB eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe über SMBDirect (iWARP eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung – ICMPv6 eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name=" Windows-Remoteverwaltung (HTTP eingehend)" new enable=yes profile=domain remoteip=any
Jetzt wird die Topologie darauf getestet, ob die Replikation eingerichtet werden kann
Test-SRTopology -SourceComputerName fs01-tf -SourceVolumeName M: -SourceLogVolumeName N: -DestinationComputerName fs02-tf -DestinationVolumeName M: -DestinationLogVolumeName N: -DurationInMinutes 30 -ResultPath c:\temp
Alle Test sollten jetzt erfolgreich abgeschlossen werden
Dann kann die tatsächliche Partnerschaft eingerichtet werden – das Laufwerk geht auf dem Zielserver offline:
New-SRPartnership -SourceComputerName fs01-tf -SourceRGName rg01 -SourceVolumeName M: -SourceLogVolumeName N: -DestinationComputerName fs02-tf -DestinationRGName rg02 -DestinationVolumeName M: -DestinationLogVolumeName N:
Failover
Der Failover kann nur manuell ausgelöst werden und wird durch Schwenken der Partnerschaftsquelle ausgelöst; daraufhin geht das Laufwerk auf dem Zielserver online. Das DFS Ziel muss ebenfalls manuell angepasst werden
Set-SRPartnership -NewSourceComputerName fs02-tf -SourceRGName rg002 -DestinationComputerName fs01-tf -DestinationRGName rg001
Wenn beide Seiten wieder online sind muss einige Minuten gewartet und auf beiden Seiten nochmals ein Befehl ausgeführt werden.
Set-SRPartnership -NewSourceComputerName fs02-tf -SourceRGName rg002 -DestinationComputerName fs01-tf -DestinationRGName rg001
Mit get-srgroup muss auf beiden Seiten die korrekte Funktion geprüft werden, danach kann zurückgeschwenkt werden.
Set-SRPartnership -NewSourceComputerName fs01-tf -SourceRGName rg001 -DestinationComputerName fs02-tf -DestinationRGName rg002
2. Cluster zu Cluster Replikation
Für Testzwecke wurde als iSCSI Host ein Windows Server verwendet. In Wirklichkeit sollte an dieser Stelle das tatsächliche Storage-System stehen.
Hierzu muss die Rolle iSCSI Zielserver installiert werden.
Danach können iSCSI Volumes für die anderen Server im Server-Manager angelegt werden.
Pro Servercluster werden zwei Volumes benötigt. Im Echtbetrieb sollte der iSCSI Host des zweiten Clusters nicht der gleiche sein wie beim ersten Cluster – sonst wäre ja der Sinn der Replikation nicht mehr gegeben – für einen Test spielt es aber keine Rolle wo die Daten liegen.
Es werden vier Fileserver benötigt; alle Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.
Es werden 3 Volumes pro Cluster benötigt, die per iSCSI angebunden werden:
- Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
- Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher
- Ein Quorum
Der Einfachheit halber werden alle Fileserver dem Servermanager des ersten Fileservers hinzugefügt.
Auf allen vier Servern müssen die Rolle Dateiserver und die Features Failoverclustering und Speicherreplikat installiert werden.
Wie bei der Einzelserver-Replikation müssen die Firewallports geöffnet werden (funktioniert nur im cmd, nicht in Powershell):
netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (SMB eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe über SMBDirect (iWARP eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung - ICMPv4 eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Datei- und Druckerfreigabe (Echoanforderung – ICMPv6 eingehend)" new enable=yes profile=any remoteip=any netsh advfirewall firewall set rule name="Windows-Remoteverwaltung (HTTP eingehend)" new enable=yes profile=domain remoteip=any
Nun müssen über den „Failovercluster-Manager“ zwei Cluster erstellt werden:
Da es beim Clustermanager nicht möglich ist, IPv6 Cluster-IPs zu vergeben, muss dies via Powershell geschehen. Add-ClusterResource -Name “IPv6 Cluster Address” -ResourceType “IPv6 Address” -Group “Clustergruppe” Get-ClusterResource "IPv6 Cluster Address" | Set-ClusterParameter -Multiple @{"Network"="Clusternetzwerk 1";"Address"= "2001:638:707:403::159";"PrefixLength"=64} Stop-ClusterResource “Clustername” Set-ClusterResourceDependency “Clustername” “[Ipv6 Cluster Address]” Start-ClusterResource “Clustername”
Nun müssen die Laufwerke in der Datenträgerverwaltung online geschaltet und GPT initialisiert werden. Das zukünftige Clusterquorum muss mit einer NTFS formatierten Partition versehen werden.
Die anderen Festplatten können auch mit ReFS verwendet werden.
Danach können sie im Failovercluster eingefügt werden.
Jetzt kann das Quorum auf beiden Clustern konfiguriert werden.
Nur wird die Dateiserverrolle hinzugefügt:
Das Datenvolume muss „zu den freigegebenen Clustervolumes“ hinzugefügt werden, das Protokollvolume muss „verfügbarer Speicher“ bleiben.
Jetzt kann eine Freigabe angelegt werden.
Nun kann die Cluster zu Cluster Replikation konfiguriert werden.
Die Clusterserver müssen vorab auf die jeweils anderen Cluster berechtigt werden.
Grant-SRAccess -ComputerName FS01-tf -Cluster fscluster02-tf Grant-SRAccess -ComputerName FS02-tf -Cluster fscluster02-tf Grant-SRAccess -ComputerName FS03-tf -Cluster fscluster-tf Grant-SRAccess -ComputerName FS04-tf -Cluster fscluster-tf Grant-SRAccess -ComputerName fscluster-tf -Cluster fscluster-tf02 Grant-SRAccess -ComputerName fscluster-tf02 -Cluster fscluster-tf Grant-ClusterAccess –user FS01-tf$ –Full –Cluster fscluster02-tf Grant-ClusterAccess –user FS02-tf$ –Full –Cluster fscluster02-tf Grant-ClusterAccess –user FS03-tf$ –Full –Cluster fscluster-tf Grant-ClusterAccess –user FS04-tf$ –Full –Cluster fscluster-tf Grant-ClusterAccess –user FScluster-tf$ –Full –Cluster fscluster02-tf Grant-ClusterAccess –user FScluster02-tf$ –Full –Cluster fscluster-tf
Folgender Befehl aktiviert die Replikation
New-SRPartnership -SourceComputerName fscluster-tf -SourceRGName rg01 -SourceVolumeName C:\ClusterStorage\Volume1 -SourceLogVolumeName n: -DestinationComputerName fscluster02-tf -DestinationRGName rg02 -DestinationVolumeName c:\ClusterStorage\Volume1 -DestinationLogVolumeName n:
Failover
Der Failover kann nur manuell ausgelöst werden und wird durch Schwenken der Partnerschaftsquelle ausgelöst; daraufhin geht das Laufwerk auf dem Zielserver online. Das DFS Ziel muss ebenfalls manuell angepasst werden
Set-SRPartnership -NewSourceComputerName fscluster02-tf -SourceRGName rg02 -DestinationComputerName fscluster-tf -DestinationRGName rg01
Wenn beide Seiten wieder online sind muss einige Minuten gewartet und auf beiden Seiten nochmals ein Befehl ausgeführt werden.
Set-SRPartnership -NewSourceComputerName fscluster02-tf -SourceRGName rg02 -DestinationComputerName fscluster-tf -DestinationRGName rg01
Mit get-srgroup muss auf beiden Seiten die korrekte Funktion geprüft werden, danach kann zurückgeschwenkt werden.
Set-SRPartnership -NewSourceComputerName fscluster-tf -SourceRGName rg01 -DestinationComputerName fscluster02-tf -DestinationRGName rg02
3. Stretched Cluster
Beim Stretched Cluster wird nur ein Cluster geblildet, das die Server 1-4 enthält.
Es werden vier Fileserver benötigt; alle Server müssen mit Windows 2016 installiert und vollständig gepatcht sein.
Es werden 2 Volumes pro Clusterseite benötigt, die per iSCSI angebunden werden:
- Daten (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite)
- Protokoll (GPT initialisiert, selbe Größe, Buchstabe und Label wie Gegenseite) – Microsoft empfiehlt hierfür schnellen Flash-Speicher
Den Servern FS01 und FS02 steht ein gemeinsamer Speicher zur Verfügung während den Servern FS03 und FS04 ein anderer gemeinsamer Speicher zur Verfügung steht.
Zunächst müssen den Servern per Powershell Standorte zugewiesen werden
New-ClusterFaultDomain -Name Seminar -Type Site -Description "Primary" -Location "Seminargebaeude" New-ClusterFaultDomain -Name Haus18 -Type Site -Description "Secondary" -Location "Haus18" Set-ClusterFaultDomain -Name fs01-tf -Parent Seminar Set-ClusterFaultDomain -Name fs02-tf -Parent Seminar Set-ClusterFaultDomain -Name fs03-tf -Parent Haus18 Set-ClusterFaultDomain -Name fs04-tf -Parent Haus18 (Get-Cluster).PreferredSite="Seminar"
Dann werden die verschiedenen Speicher angebunden.
Dass hier einige Offline erscheinen, weil der Besitzer sie nicht erreichen kann, ist in Ordnung; das in diesem Bespiel vorhandene Quorum wird nicht benötigt, da die Verwendung eines Freigabequorums empfohlen wird; dieses sollte auf einem dritten Speicher liegen.
Das Datenvolume muss zu den freigegebenen Clustervolumes hinzugefügt werden, danach kann die Replikation aktiviert werden.
Es werden automatisch die richtigen Laufwerke vorgeschlagen und müssen nur noch angehakt und bestätigt werden.
Wenn schon ein Backup der Quelldateien auf dem Ziel vorhanden ist, kann Seeding ausgewählt werden, was die Replikationszeit verkürzt.
Die Synchronisation sollte synchron erfolgen.
Schreibreihenfolge aktivieren verringert die Wahrscheinlichkeit inkonsistenter Daten, für einfache Dateifreigaben sollte die Konfiguration „Höchste Leistung“ keine Probleme bereiten.
Nach langwieriger Synchronisation können dann auf dem Cluster eine Dateiserverrolle und Freigaben erstellt werden.
Nur wird die Dateiserverrolle hinzugefügt:
Wenn beim Erzeugen von Freigaben ein Fehler auftritt hilft zumeist abwarten und später nochmal versuchen
Die Freigabe sollte über den Clusterassistenten erstellt werden.
Failover
Der Failover geschieht allein durch Abwesenheit von Servern einer Seite.
Fällt die Zielseite weg gibt es nichts zu beachten; die Quelle läuft weiter.
Fällt die Quellseite weg bzw. soll die Quellseite abgeschaltet werden, ist es erforderlich, dass zunächst die Replikation fehlerfrei abgeschlossen wird.
Ist die Replikation nicht im Status „kontinuierliche Synchronisation“ übernimmt das Ziel nicht die Clustervolumes wenn die Quelle wegbricht.
Fröhliches Clustern 🙂