Hyper-V Livemigration – Der Unterschied zwischen CredSSP und Kerberos
Wenn Sie mit Hyper-V eine Livemigration machen möchten, ist dies seit dem Windows Server 2012 etwas, was ohne Failovercluster oder gemeinsamen Speicher funktioniert. Um die Funktion der Livemigration zu aktivieren, muss in den Hyper-V-Einstellungen unter Livemigration die Option Ein- und ausgehende Livemigrationen ermöglichen aktiviert werden. Nach der Aktivierung können bzw. müssen Sie diverse Einstellungen vornehmen, unter anderem die Frage nach dem Authentifizierungsprotokoll. Hier haben Sie die Wahl zwischen Security Support Provider für Anmeldeinformationen (CredSSP) und Kerberos. Dies sieht wie folgt aus:
Die Beschreibung unter den beiden Einstellungen verrät bereits ein klein wenig, was es auf sich hat mit diesen beiden Einstellungen.
CredSSP
Bei dieser Art der Authentifizierung müssen Sie sich an dem Server anmelden, an dem Sie die Livemigration starten möchten. Dies bedeutet, dass Sie nur VMs verschieben können, wenn Sie entweder direkt an dem System angemeldet sind oder eine Sitzung per RDP bzw. einer anderen Fernwartungslösung geöffnet haben. Im Umkehrschluss bedeutet dies, dass Sie keine Livemigration einer VM starten können, wenn Sie mit einem Hyper-V-Manager eine Verbindung zu diesem System aufbauen und über diesen Weg eine Livemigration starten.
Kerberos
Wenn Sie diese Art der Authentifizierung wählen, ist dies laut der Beschreibung erst einmal sicherer, erfordert aber weitere Schritte der Einrichtung.
Die Livemigration per CredSSP
Wenn Sie CredSSP auswählen, können Sie recht schnell eine Livemigration durchführen. In meinem Beispiel habe ich eine VM mit dem Namen vLiveMigrationTest, die zwischen den Systemen Hyperv3 und Hyperv9 übertragen werden soll. Im Aktionsmenü der VM im Hyper-V-Manager wählen wir die Option Verschieben…
Es öffnet sich ein Assistent, der uns durch den Migrationsvorgang führt. Bei der Wahl des Verschiebungstyp wählen wir die Option Virtuellen Computer verschieben.
Im nächsten Fenster geben wir den Namen des Zielsystems ein und bestätigen die Auswahl. Es wird direkt eine Verbindung zu diesem Host aufgenommen und überprüft, ob eine Verbindung generell möglich ist.
Nun können wir wählen, wie die Daten der VM abgelegt werden. Ich behalte die Standard-Einstellung und lege alle Daten in einen einzelnen Speicherort.
Nun können wir den Zielspeicherort angeben (die 4 MB in meinem Fall werden angezeigt, weil die VHDX-Datei keine Daten enthält)
Es erscheint eine Zusammenfassung der getätigten Einstellungen, mit einem Klick auf Fertig stellen beginnt die Migration
Nachdem der Vorgang erfolgreich abgeschlossen ist, läuft die VM auf Hyperv9, wir können dies überprüfen, indem wir uns die VMs auf diesem Host anschauen
Wenn wir die gleichen Einstellungen auf Hyperv9 im Verschiebe-Assistenten durchführen, können wir dies auch machen bis zur Zusammenfassung
Wenn wir nun diese Einstellungen Fertig stellen, erscheint die folgende Meldung und die Migration wird nicht durchgeführt
Fehler beim Herstellen einer Verbindung mit dem Host „HYPERV3“: Die Anmeldeinformationen, die dem Paket übergeben wurden, wurden nicht erkannt. (0x8009030D).
Die Meldung zeigt uns nicht nur eine Fehlermeldung und die ID 0x8009030D, sondern führt ebenfalls direkt die Lösung des Problems auf.
Die Livemigration per Kerberos
Wenn die Livemigration per Kerberos authentifiziert werden soll, muss dies entsprechend in den Hyper-V-Einstellungen geändert werden
Diese Einstellung alleine ist noch nicht alles, wenn wir nun versuchen eine Livemigration durchzuführen, erscheint die folgende Meldung
Fehler beim Herstellen einer Verbindung mit dem Host „HYPERV3“: Im Sicherheitspaket sind keine Anmeldeinformationen verfügbar. (0x8009030E).
Wie die Fehlermeldung korrekt anmerkt, muss in der Active Directory noch die eingeschränkte Delegierung für den Host aktiviert werden. Hierzu wählen wir uns auf einen der Domänencontroller auf und öffnen Active Directory-Benutzer und –Computer. Im Objekt der beiden Hyper-V Hosts öffnen wir den Reiter Delegierung. Die Einstellungen sehen standardmäßig wie folgt aus
Wir passen diese Einstellungen an und wählen Computer bei Delegierung angegebener Dienste vertrauen. Die Option Nur Kerberos verwenden bleibt stehen und unter Dienste, für die diese Konto delegierte Anmeldeinformationen verwenden kann, tragen wir die folgenden Daten ein
Das Ergebnis sieht wie folgt aus
Wir haben nun eine Delegation in den Eigenschaften von Hyperv3 erstellt. Die gleichen Einstellungen müssen nun in den Eigenschaften von Hyperv9 gemacht werden, damit eine Migration in beide Richtungen funktioniert. Das Ergebnis sieht wie folgt aus
Nach der Übernahme der Einstellung und einer erneuten Migration der VM funktioniert diese ohne Probleme und die VM auf Hyperv9 kann im Hyper-V-Manager auf Hyperv3 migriert werden.
Die Konfiguration per PowerShell
Da das Hinzufügen der einzelnen Objekte und Rechte per GUI recht lange dauert, habe ich ein kurzes Script geschrieben, welches diese Aufgabe übernimmt inkl. der Abfrage der Systemnamen.
Write-Host "Achten Sie bitte bei der Eingabe darauf, NICHT den vollen Namen (FQDN) zu verwenden!"
$Hostname1 = Read-Host "Bitte Namen des ersten Systems eingeben"
$Hostname2 = Read-Host "Bitte Namen des zweiten Systems eingeben"
$Domain = Read-Host "Bitte Namen der AD-Domaene eingeben"
Get-ADComputer $Hostname1 | Set-ADObject -Add @{"msDS-AllowedToDelegateTo"="Microsoft Virtual System Migration Service/$Hostname2.$Domain", "cifs/$Hostname2.$Domain","Microsoft Virtual System Migration Service/$Hostname2", "cifs/$Hostname2"}
Get-ADComputer $Hostname2 | Set-ADObject -Add @{"msDS-AllowedToDelegateTo"="Microsoft Virtual System Migration Service/$Hostname1.$Domain", "cifs/$Hostname1.$Domain","Microsoft Virtual System Migration Service/$Hostname1", "cifs/$Hostname1"}
Das Script muss auf einem Domänencontroller ausgeführt werden, da dort die Einstellungen vorgenommen werden. Das Script fragt den Namen von System A, System B sowie die Domäne ab, danach wird zwischen den beiden Hosts jeweils eine Delegation erstellt. Die Ausführung sieht wie folgt aus