Highly Available IP Adress with Windows Server 2016 Failover Cluster Role

Aus bknowledgebase
Zur Navigation springen Zur Suche springen

Einleitung[Bearbeiten]

Die Erstellung einer Hochverfügbaren IP Adresse mit der Windows Server Failover Cluster Rolle ist ein sehr nützliches Tool um Hochverfügbare Dienste im Unternehmen zu erschaffen. Z.B. können so auf einfache Weise Mailserver hochverfügbar gemacht werden und in Verbindung mit "Round-Robin-DNS" Hochverfügbarkeit und LoadBalancing mit Boardmitteln verbinden. Auch andere Dienste wie z.B. der Zugriff auf "ldap" oder auf andere Dienste kann so sehr einfach Hochverfügbar gemacht werden.

Empfehlung / Vorwegnahme[Bearbeiten]

Die hier vorgeschlagene Konfiguration wird von mir nicht als Best Practice oder die einzig Mögliche oder besser als andere o.ä. empfohlen. Ich stelle sie lediglich als eine Möglichkeit dar. Im Internet kursieren jede Menge Tipps und Tricks und wohlgemeinte Ratschläge. Unter Anderem, dass "unter allen Umständen" ein "richtiger" Loadbalancer einzusetzen ist. Diese Aussage ist schlichtweg nicht zutreffend. Die Konfiguration wie hier vorgeschlagen funktioniert einwandfrei und hat sich ebenfalls als zuverlässig bewährt.

Der große Vorteil ist, dass sich die komplette Konfiguration mit reinen Windows Server Boardmitteln umsetzen lässt. In Sachen Performance konnte ich bisher in keiner Produktivumgebung negative Effekte feststellen.


Prerequisites[Bearbeiten]

  • Ich gehe hier davon aus, dass es bereits einschlägigen Erfahrungen mit Windows Server gibt.
  • Außerdem bezieht sich mein Beispiel hier auf "Windows Server 2016". Für die Umsetzung ist eine Umgebung mit DNS-Server und mindestens zwei Windows Server 2016 Maschinen von Nöten.
  • Weiterhin gehe ich davon aus, dass ein DHCP Server zur Verfügung steht

Failover für die IP Adressen:

192.168.0.20

und

192.168.0.30

Anleitung[Bearbeiten]

In dieser Anleitung nutze ich die Möglichkeit der Hochverfügbaren IP Adresse für 2 Mailserver, damit es am Praxisbeispiel klarer wird.

Windows Server 2016 Installieren[Bearbeiten]

  • Auf die Installation gehe ich nicht ein
  • Am besten eine zusätzliche Netzwerkkarte pro Server konfigurieren die für die Clusterkommunikation zuständig ist. (Optional)
  • Falls diese genutzt wird - wie in diesem Beispiel - kann/sollte die Karte ohne Feste IP-Adresse (mit DHCP) arbeiten, das erleichtert die Clusterconfiguration

Windows Server Failover Cluster Rolle Installieren[Bearbeiten]

Auf beiden Servern (hier Mailserver) z.B. über den "Server-Manager" oder via Powershell das Rollenfeature Failoverclustering installieren.

Siehe hier via ServerManager:

Failoverclustering.png

Weiterhin sollte man den "Wizard" alle zugehörigen Tools und Features installieren lassen.

Neuen Cluster anlegen[Bearbeiten]

1. z.B. Via "Server-Manager" den "Failover Cluster Manager"

Clustermanager.png

2. Neuen Cluster anlegen

Dazu Im "Failovercluster-manager" Rechtsklick auf den obersten Knoten und "Cluster erstellen" klicken.

CreateCluster.png

Anschließend einfach die 2 Servernamen hinzufügen und als Netzwerk auswählen entsprechend dem Wizard.

CreateCluster 01.png


Dann einfach bis zum Ende durch den Wizard klicken, Validierungstests besätätigen, Clusternamen wählen etc.


3. "Leere Rolle" anlegen

Im "Failover Cluster Manager" rechter Mausklick auf den neuen Cluster und auf "Leere Rolle anlegen" klicken.

CreateEmptyRole.png

4. Eigenschaften der Rolle definieren

Weiterhin Rechtsklick auf Neue Rolle und Eigenschaften wählen um die Einstellungen anzupassen.

RoleSettings.png


Hier sollte dann ein neuer Name vergeben werden, da dies die Rolle für nur eine IP-Adresse ist gebe ich den entsprechenden Namen an. Weiterhin wähle ich die Server aus die diese Rolle erhalten sollen und definiere über die Reihenfolge auch die Priorität Dann auf den Reiter Failover klicken

RoleSettings 01.png


Auf dem Reiter Failover z.B. folgende Settings wählen. (Vor allem Failback, wenn gewünscht ist das bei Verfügbarkeit wieder zur ursrprünglichen Konfiguration zurückgekehrt werden soll.

RoleSettings 02.png


Jetzt Punkte 3. und 4. wiederholen, da wir jeweils eine Rolle für die beiden IP Adressen der Server benötigen, die dann via Failover auf den jeweils anderen Server übertragen werden sollen.

Bei der 2. Rolle sollte allerdings der "andere" Server die höhere Priorität haben. so dass immer eine IP-Adresse dem einen und eine dem anderen Server zugewiesen ist.

RoleSettings 03.png


HA IP Adressen anlegen[Bearbeiten]

Im Folgenden legen wir die IP Adressen an. Man kann sich diese quasi wie "virtuelle Netzwerkkarten" vorstellen, die hinter den eigentlichen Netzwerkkarten des Clusters versteckt sind. Leider werden diese IP Adressen auch nicht in der Netzwerkkonfiguration angezeigt, deshalb ist hier auch eine gute Dokumentation anzuraten.


1. Wieder den "Failover Cluster Manager" Starten und im Bereich Roles unter dem Clusterknoten die neu angelegten Rollen betrachten.

Meilerollen.png


2. Rechtsklick auf eine der Rollen und Add Resource->More Resources->IP Address wählen.

Addresource.png

Die Rolle wird nun automatisch zunächst auf "Stopped" gesetzt, da die Ressource noch konfiguriert werden muss.


3. Im "unteren Fensterbereich" des "Failover Cluster Managers" auf den Reiter "Resources" klicken.

Klickresources.png

Und anschließend doppelklick auf IP Address: <not configured>

Ipnotconfig.png

Hier nun nur noch das entsprechende Netzwerk auswählen und die erste Netzwerkadresse.

Ipconfig 01.png


4.Und Rolle wieder starten

Startrole.png


Die Schritte 2 bis 4 wiederholen wir dann für die andere Clusterrolle und vergeben die zweite Adresse.

Testen[Bearbeiten]

Nun kann man diverse Dinge testen. Wenn einer der Server "ausfällt" wird die IP Adresse die dieser Server primär hostet von dem anderen Clustermiglied übernommen. Außerdem wird die IP-Adresse auch wieder zurück migriert sobald der Server wieder da ist.

Einfach zu testen durch anpingen beider IP Adressen und geplantem Neustarten der jeweiligen Server.

Kombination mit DNS Round-Robin und einem Dienst[Bearbeiten]

Exchange/Mail Server[Bearbeiten]

Hier jetzt noch das Praxisbeispiel.

Nehmen wir jetzt noch an die beiden Server die wir hier betrachtet haben sind Exchange/Mailserver und wir setzen einen DNS Server ein, so müssen wir nun noch lediglich folgendes tun.

  1. Prüfen ob "Round Robin" auf dem DNS Server eingeschaltet ist. (Eigenschaften des Scope -> Siehe Google)
  2. Zwei DNS Einträge mit dem gleichen Namen z.b. "meine-emailserver.meinedomain.local" anlegen jeweils mit einer der IP Adressen "192.168.0.20" und "192.168.0.30". Eine kurze Prüfung durch mehrfachaufruf von "nslookup" zeigt sofort, dass ca. 50/50 einmal die eine und einmal die andere IP Adresse zurückgeliefert wird.
  3. Meine Applikation - hier z.B. den Mailserver - so konfigurieren, dass sie über den entsprechenden DNS Namen funktioniert wenn nötig.
  4. Die Clients so konfigurieren, dass sie sich nur noch via "meine-emailserver.mainedomain.local" verbinden

Das wars eigentlich schon.


Die Clients werden sich nun "mal mit dem einen" und "mal mit dem anderen" Server verbinden und so "Loadbalancing" nutzen. Weiterhin wird beim Ausfall eines der Server die entsprechende IP durch die Clusterfunktion auf den jeweils anderen Server umgezogen und funktioniert so ebenfalls so lange weiter, bis der ursprüngliche Server wieder da ist. Das ist auch toll für Wartungsarbeiten.

Andere Dienste[Bearbeiten]

Auf diese Weise lassen sich auch andere Dienste dynamischer aufstellen. Z.B. die Zugriffe vieler Drittanbietertools auf Active Directory via ldap. Man legt wiederum DNS Round Robin auf "mein.ldap.meinedomain.local" und die zwei HA IP Adressen an und hat somit eine völlige Entkopplung der Zugriffe zu den Servern erreicht.

Für komplexere Anwendungen wie z.B. Fileserverzugriffe sollte man dann allerdings den offiziellen Weg der Einrichtung eines FailoverClusters mit der Fileserver Rolle gehen. Hierzu wird es auch nochmal einen Artikel geben.


H@ppy H@cking