Die Installation eines funktionierenden Failovercluster unter Windows Server 2012 mit nur einer physischen Netzwerkkarte
Ich komme gerade von einer Woche Powerkurs aus dem Süden Deutschlands wieder. Während des Kurses haben wir verschiedene Möglichkeiten und Optionen angesprochen, wie die Aufteilung des Netzwerks am sinnvollsten und am einfachsten gemacht werden kann. Auf zwei der Teilnehmer-Systeme konnte der jeweilige Teilnehmer nur auf eine physische Netzwerkkarte zurückgreifen, und zwar die auf dem Mainboard. Dies hat uns allerdings nicht davon abhalten können, die Systeme mit insgesamt sechs Karten installieren und einrichten zu können. Wie wir das gemacht haben? Mit einer ziemlich coolen Funktion im Windows Server 2012, der Netzwerkvirtualisierung.
Der Aufbau der während des Kurses erstellten Failovercluster wurde nach unseren Best Practises vorgenommen, d.h. es wurden insgesamt sechs Netzwerkkarten benötigt. Der gewünschte Aufbau des Netzwerks sollte wie folgt aussehen:
Da wir nur eine Karte zur Verfügung hatten, haben wir mit Hilfe der Netzwerkvirtualisierung weitere Karten erstellt. Im ersten Schritt wurde per PowerShell-Befehl ein Team erstellt, einziges Mitglied in diesem Team war der eine physisch vorhandene Adapter mit dem Namen “LAN-Adapter”.
Edit: Wie Hannes mit seinem Kommentar korrekt angemerkt hat, ist die Erstellung des Teams an dieser Stelle nicht unbedingt notwendig, die vNICs können auch direkt auf die nicht-geteamte Karte gesetzt werden. Die Erstellung eines Teams hat keine Vor- oder Nachteile, lediglich das man lernt wie die Erstellung per PowerShell funktioniert :)
New-NetLbfoTeam -Name „Team1“ -TeamNicName „Team1“ -TeamMembers LAN-Adapter -TeamingMode SwitchIndependent -LoadBalancingAlgorithm HyperVPort -Confirm:$false
Eine Beschreibung des Befehls mit allen Parametern und einer sehr guten Beschreibung findet ihr im TechNet: Microsoft TechNet: New-NetLbfoTeam
Nachdem wir das Team (mit nur einem Adapter, aber trotzdem nutzbar) erstellt haben, können wir eine Hyper-V Switch erstellen. Diese ist Grundlage für unsere Verbindung der VMs zur Außenwelt, zur Kommunikation des Hosts mit der Außenwelt sowie technische Grundlage für die Erstellung von virtuellen Netzwerkkarten, vNics genannt. Der Befehl lautet
New-VMSwitch „LAN“ -MinimumBandwidthMode None -NetAdapterName „Team1“ -AllowManagementOS 1 -Confirm:$false
Hiermit erstellen wir eine neue Switch mit dem Namen “LAN”. Eine mögliche Bandbreitenreservierung aktivieren wir nicht, als Grundlage für diese virtuelle Switch wird “Team“1” genutzt. Hierbei ist es egal, ob es sich um eine physische Karte oder ein Team handelt. Wichtig ist in diesem Fall der Parameter “AllowManagementOS” mit dem Wert 1, dieser macht nichts anderes als wenn ihr im Hyper-V-Manager bei der Erstellung einer virtuellen Switch den Haken bei “Gemeinsames Verwenden dieses Netzwerkadapters für das Verwaltungsbetriebssystem zulassen” setzt.
Nachdem die virtuelle Switch vorhanden ist, könnten wir nun sowohl mit unseren VMs und dem dem Host-Betriebssystem eine Kommunikation per Netzwerk aufbauen. Da wir im Host allerdings nur eine einzige Karte haben, müsste entweder die gesamte Kommunikation über diese eine Karte laufen, oder wir erstellen alternativ noch weitere Karten. Dies geschieht mit den folgenden Befehlen:
Add-VMNetworkAdapter -ManagementOS -Name „CSV“ -SwitchName „LAN“
Add-VMNetworkAdapter -ManagementOS -Name „Livemigration“ -SwitchName „LAN“
Add-VMNetworkAdapter -ManagementOS -Name „iSCSI“ -SwitchName „LAN“
Add-VMNetworkAdapter -ManagementOS -Name „iSCSI2“ -SwitchName „LAN“
Nach dem Absetzen dieser Befehle haben wir uns vier weiteren Karten erstellt, die nun auch in der Systemsteuerung auftauchen und wie gewohnt administriert werden können. Die virtuelle Switch (in diesem Beispiel mit dem Namen “LAN”) könnt ihr im Hyper-V-Manager nun sehen, allerdings nicht bearbeiten. Löschen wäre übrigens möglich, falls ihr dies machen möchtest oder müsst.
Fazit: Diese wenigen Befehle reichen aus, um auf einem Host virtuelle Netzwerkkarten anlegen zu können. Die Aussage “Betrieb eines Clusters mit nur einer Netzwerkkarte” ist somit richtig, allerdings nur für Demo- oder Testumgebungen anwendbar. Die Nutzung von einem Team aus mehreren Karten (z.B. zwei oder vier 10GBit/s-Adapter) wäre denkbar, allerdings sollte hier unter anderem die Bandbreitenbeschränkung aufgenommen werden, damit die Versorgung aller vNics mit der benötigten Bandbreite garantiert werden kann.
Wenn alle hier aufgeführten PowerShell-Befehle untereinander in eine .ps1-Datei geschrieben werden, die Ausführung dieses Scripts auf dem PC/Server erlaubt ist und die Hardware-Karte “LAN-Adapter” heißt, könnten sogar mehrere Systeme mit nur einem Klick netzwerktechnisch eingerichtet werden. Coole Sache! :)