Moving Hyper-V Replikas

Seit der Hyper-V Version in Windows Server 2012 R2 lassen sich VMs im laufenden Betrieb auch ohne Failover Cluster verschieben. Das ist ziemlich Klasse und aus Sicht eines Schwaben schon ein Mega-Lob Winking smile Darüber hinaus gibt es noch die Möglichkeit eine Hyper-V Replikation zu erweitern (Extended Hyper-V Replication), also eine replizierte VM nochmals auf einen weiteren Hyper-V Host zu replizieren. Man hat damit also zwei Kopien einer VM.

Will man nun eine dieser Kopien verschieben, muss man auf eine Kleinigkeit aufpassen. Nach dem Verschieben muss nämlich, der Replica-Server angepasst werden. Ich zeige den Ablauf an einem Beispiel, damit klarer wird was ich meine.

Allgemein

Ich benenne meine Hyper-V Replikas immer um, indem ich ein “!” voran stelle. Die erste Replikation bekommt ein ! und die zweite Replikation !!, also:

  1. vm.sbsland.local (aktive VM)
  2. !vm.sbsland.local (erste Replika)
  3. !!vm.sbsland.local (zweite Replika)

Ausgangsituation

Wir haben eine VM (vm.sbsland.local) welche über insgesamt 3 Hosts repliziert wird.

image

Die VM (vm.sbsland.local) läuft auf dem Hyper-V Host 1 (cnoc.whisky.local) und wird von dort auf den Hyper-V Host 2 (nevis.whisky.local) repliziert. Auf diesem Host (nevis.whisky.local) wurde dann wiederum eine erweiterte Replikation (Extended Replication) auf den Hyper-V Host 3 (skye.whisky.local) eingerichtet.

Auf den Hyper-V Hosts sieht das nun wie folgt aus. Neben PowerShell habe ich noch jeweils den Hyper-V Manager / Replikation für die VM dargestellt.

cnoc.whisky.local:image

image

nevis.whisky.local:
image

image

Hier sehen wir neben der ersten (primary) Replikation auch die erweiterte (extended) Replikation.

skye.whisky.local:
image

image

Zielumgebung

Nun wollen wir den Hyper-V Host 2 (nevis.whisky.local) durch einen neuen Hyper-V Host ersetzen (mull.whisky.local). Eine erste Idee wäre natürlich einfach die Hyper-V Replikationen neu ein zu richten, das wollen wir aber nicht! Wir verschieben einfach die erste Replika der VM (!vm.sbsland.local) auf den neuen Hyper-V Host (mull.whisky.local).

image

Wie in der Abbildung zu sehen ist, wird die erste Replika (!vm.sbsland.local) der VM auf den neuen Host verschoben. Das kann über das Hyper-V Management oder aber über den folgenden PowerShell-Befehl erfolgen.

Move-VM -Name !vm.sbsland.local -DestinationHost mull.whisky.local -IncludeStorage -DestinationStoragePath 'd:\replicated virtual machines'

image

Nun haben wir auf dem Hyper-V Host 2 NEU (mull.whisky.local) die VM, aber noch mit dem alten Hyper-V Host 2 (nevis.whisky.local) eingetragenen Replika Server. Nach Ablauf des Intervalls für die Hyper-V Replikation geht diese in den Zustand Warning bzw. Critical.

image

Damit die Replikation wieder in Gang gesetzt werden kann, muss in der Konfiguration der !vm.sbsland.local der alte Hyper-V Host 2 (nevis.whisky.local) gegen den neuen Hyper-V Host (mull.whisky.local) ersetzt werden. Was über das Hyper-V Management oder über den folgenden PowerShell-Befehl erfolgen kann:

Set-VMReplication -VMName vm.sbsland.local -ReplicaServerName mull.whisky.local

Der Befehl muss dazu auf dem Hyper-V Host 1 (cnoc.whisky.local) ausgeführt werden.

image

Danach recht ein Resume-VMReplication um die Replikation wieder in Gang zu setzen.

image

image

So, nun läuft es wieder.

Enjoy it, b!

Hyper-V Replika und Configuration Version

Auf einem Hyper-V Host hatte ich das Problem, dass die Hyper-V Replikation einfach nicht mehr in Gang zu bekommen war. Gewundert hat mich das schon, da diese coole Technologie seit dem Windows Server 2012R2 problemlos funktioniert hat. Unter Windows Server 2012 hatte ich gelegentlich kleinere Probleme, die aber mit dem R2 Release verschwunden waren. Doch zurück zum Problem …

Die Hyper-V Replication war im Status Critical und ließ sich auch manuell nicht mehr zur Arbeit bewegen.

Ich habe ein wenig herum gesucht, bis mir auffiel das beide VMs welche an der Replikation teilnehmen unterschiedliche Hyper-V Configuration Versionen hatten! Hier wurde wohl die Version der einen VM aktualisiert und dabei die Replika vergessen.

Damit man an die Hyper-V Configuration Version kommt, muss man diese im Hyper-V Management einblenden.

image

VMs welche auf einem Windows Server 2016 (oder auch Hyper-V 2016) angelegt werden, haben die Version 8. VMs welche auf so einen Host verschoben werden, können im ausgeschalteten Zustand auf diese Version aktualisiert werden. Das muss dann auch auf allen Replikas gemacht werden. Ist das nicht möglich, da z.B. Replikations-Hosts noch alle eine “alte” Hyper-V Version haben, muss die VM solange auf Version 5 bleiben, bis ein Upgrade stattgefunden hat. Dann klappt es auch wieder mit der Replikation.

Enjoy it, b!

NTDS Backup Error 1168 (1032)

Manche Fehler sind schon fieß! Auf einem Windows Server 2012 R2 DC (Windows Server 2012 R2 mit installierter Small Business Essential Rolle) hatte ein Kunde seit einiger Zeit den folgenden Fehler im Health Report des Servers.

image

Analog dazu die entsprechende Meldung im Ereignisprotokoll (der Health Report holt diese auch nur dort heraus).

image

Um diesen Fehler zu reparieren gibt es hinreichend viele Links, Artikel und Blogs im Web:

https://support.microsoft.com/de-de/kb/280364

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1a0d9633-c497-4cab-bbff-053e2a056f6d/event-id-1168-active-directory?forum=winserverDS

Welche aber alle nicht funktionieren (zumindest in diesem Fall hat das nicht geklappt). Im Application Eventlog habe ich dann immer die folgenden Einträge gefunden…

image

… die auf ein Problem mit dem VSS Writer hindeuten.

image

Eine Abfrage der Registry ergab aber, dass die Einstellungen passen müssten.

C:\Temp>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Para
meters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
    Src Srv objectGuid    REG_BINARY    08E518AF5742FA48ACCAFDAD6F518DE4
    System Schema Version    REG_DWORD    0x45
    Root Domain    REG_SZ    DC=xxx,DC=local
    Configuration NC    REG_SZ    CN=Configuration,DC=xxx,DC=local
    Machine DN Name    REG_SZ    CN=NTDS Settings,CN=WP-SBS-1,CN=Servers,CN=Stan
dardname-des-ersten-Standorts,CN=Sites,CN=Configuration,DC=xxx,DC=local
    Src Root Domain Srv    REG_SZ    WP-SBS-2.xxx.local
    DsaOptions    REG_SZ    1
    IsClone    REG_DWORD    0x0
    ServiceDll    REG_EXPAND_SZ    %systemroot%\system32\ntdsa.dll
    DSA Working Directory    REG_SZ    C:\Windows\NTDS
    DSA Database file    REG_SZ    C:\Windows\NTDS\ntds.dit
    Database backup path    REG_SZ    C:\Windows\NTDS\dsadata.bak
    Database log files path    REG_SZ    C:\Windows\NTDS
    Hierarchy Table Recalculation interval (minutes)    REG_DWORD    0x2d0
    Database logging/recovery    REG_SZ    ON
    DS Drive Mappings    REG_MULTI_SZ    c:\=\\?\Volume{ca08668b-ea69-4e87-a59a-
c848a2f1fea5}\
    DSA Database Epoch    REG_DWORD    0x2ba5
    Strict Replication Consistency    REG_DWORD    0x1
    Schema Version    REG_DWORD    0x45
    ldapserverintegrity    REG_DWORD    0x1
    Global Catalog Promotion Complete    REG_DWORD    0x1

Das Volume für das DS Drive ist korrekt und die anderen Einträge stimmen auch, allerdings hatte der VSS Writer ein Problem …

c:\temp> vssadmin list writers
...

Writer name: 'NTDS'
   Writer Id: {b2014c9e-8711-4c5c-a5a9-3cf384484757}
   Writer Instance Id: {f86a8c78-c7e5-4f16-b1fd-09abd7eaff32}
   State: [11] Failed
   Last error: Non-retryable error

...

… das sich auch nicht durch einen Neustart beheben ließ. Daraufhin habe ich die VM auf dem Hyper-V Host exportiert und in meiner Testumgebung wieder importiert und gestartet … der Fehler war weg! Ein Vergleich der beiden Hosts / VMs ergab, dass auf dem Host welcher die VM mit dem Fehler bereit stellt die Hyper-V Replikation aktiv war. Per se, ist das kein Problem da auch im Testlab eine Replika am Laufen war – nur eben mit einer anderen Einstellung!

image image
Fehler 1168 im Eventlog vorhanden KEIN Fehler im Eventlog vorhanden

Nachdem auf dem produktiven Hyper-V Host die Replikation entsprechend angepasst wurde, war dort der Fehler verschwunden.

Enjoy it und noch ein gutes Neues Jahr 2017, b!