Table of Contents

vCenter Heartbeat

Physical to Physical - ein anderer Weg

Wenn man vCenter Heartbeat physisch to physisch installiert, gibt es eine schnelle Variante, die ich hier beschreiben möchte.

Hintergrund

Mit Windows 2012 gibt's doch einige Probleme mit dem Windows Backup und Restore. (Mehr dazu auch bei Jörg&Christians Blog unter http://www.vcoportal.de/2013/12/vmware-vcenter-server-heartbeat-restore-on-a-second-node-a-journey/ Außerdem dauert der Weg über Backup und Restore der HB Konfiguration eine ganze Weile. Hat man physische vCenter Server, die Festplatten in RAID 1 Konfiguration verwenden, beschreibe ich hier einen schnelleren Weg, der aber mehr Handarbeit benötigt :-)

Übersicht

Die Idee ist, nach der Installation des primären Knotens einfach den RAID 1 Spiegel aufzubrechen. D.h. die zweite Harddisk des Primären Knoten wird zur ersten Harddisk des Sekundären HeartBeat Knotens. Danach wir sowohl im primären, wie auch im sekundäre Knoten das RAID 1 wiederhergestellt. Während dieser Wiederherstellungszeit kann man bereits den sekundären Knoten weiterkonfigurieren.

Was ist zu tun?

  1. Installation des Betriebssystems und der vCenter Umgebung auf dem primären Knoten. Das ist erst einmal unspannend…
  2. Installation von vCenter HeartBeat auf dem primären Knoten nach Installations Doku bis zu dem Schritt “Create Backup”
  3. RAID Konfiguration aufbrechen
    • Primären Knoten herunterfahren
    • zweite Platte aus dem RAID 1 Verbund ziehen
    • diese zweite Platte als primäre Platte in den Sekundären Knoten schieben
    • neue Platte als zweite Platte in den primären Knoten schieben und Server starten
    • ggf. muss die neue Platte als “Spare Disk” gekennzeichnet werden, damit diese für das RAID 1 genutzt wird (z.B. bei LSI RAID Controller)
    • sekundären Server ohne Netzwerk starten und im RAID BIOS die RAID Konfiguration von der primären Platte einlesen lassen. (bei LSI RAID Controller Option “Read Foreign Config”)
    • im sekundären Server auch die zweite Platte als Spare kennzeichnen, so das RAID 1 wieder neu gebaut wird.
  4. beim sekundären Server sysprep starten und den Server zum Hostnamen des zweiten Knotens umbenennen.
  5. durch sysprep wird der Knoten neu gestartet, dabei kann dem Server wieder sein Netzwerk zurückgegeben werden
  6. den Rechner in die Domäne aufnehmen und ggf. die Laufwerksbuchstaben neu sortieren
  7. im Neverfail Programm Verzeichnis unter \R2\bin das Setup mit setup -installSecondary starten.
  8. Dieses Setup startet die Konfiguration. Am wichtigsten sind dabei in diesem Wizzard die Optionen “… make Secondary” und die public IP Adresse muss manuell gesetzt werden.
  9. danach kann der HB Service auf dem Secondary Node gestartet werden
  10. in der HeartBeat Konfiguration müssen noch einige Dinge konfiguriert werden
    • SQLServerNFPlugin konfigurieren (KB2061548)
    • Timeout für SQLServer und vCenter auf 600 Sekunden erhöhen
    • SQLServer Agent als überwachten Service einrichten
    • Pingeinstellungen überprüfen
    • ggf. SetSPN Kommando durch eigenes Script ersetzen (Siehe dazu entsprechenden Artikel)
  11. SQLServer Wartungs&Backup Jobs auf beiden Knoten einrichten (z.B. Lösung von Ola Hallengren. Deshalb auch der SQL Agent als überwachter Service…
  12. Failovertests laut Dokumentation absolvieren
  13. fertsch! - Wie man im Sächsischen sagt….

Das sieht auf dem ersten Blick nach mehr Handarbeit aus. Jedoch ist man um Längen schneller und weiß was man konfiguriert hat :-)

SetSPN und Domänenaccount

Das Problem

Seit Jahren zieht sich ein “Bug” durch vCenter Hearbeat.

Konfiguriert man den SQLServer so, dass er unter Domänennutzeraccount läuft, gibt es mit setSPN.exe ein Problem :-( In der HeartBeat Konfiguration setzt man den Account unter dem setSPN aufgerufen wird. Dies muss ein Domänennutzer sein. Jetzt das Problem: setSPN erwartet den Nutzer in der Notation Domäne\Nutzername. Jedoch egal wie der Nutzer konfiguriert wird, wird dieser von HB immer in der Form Nutzername@Domäne an setSPN übergeben, was dann natürlich zum Fehler führt.

VMwares Workaround

Der Workaround von VMware ist eine Wrapper Batchdatei, die setSPN.exe mit den richtigen Parameter aufruft. Dafür muss man den beiden Knoten in der Domäne entsprechende Rechte geben.

"...Thank you for your patience with us. We realize that some changes will need to be made to the existing KB 2017530 - Performing a Least Privilege Installation of vCenter Server Heartbeat when protecting SQL Server.
 
Until this gets address in a future release of the vCenter server heartbeat, the workaround for now is as follows:
 
   1. On the Domain Controller, navigate to Active Directory Users and Computers.
   2. Under the View menu ensure Advanced Features is ticked.
   3. Select the computer account of the server running vCenter Server Heartbeat.
   4. On the Primary computer account (Primary Management Name):
         1. Navigate to the Security tab and click Advanced.
         2. On the Permissions, tab click Add.
         3. Select the user to run the SetSPN command (this can be the same user that runs SQL Server ie. 2a-net\sqlservervc).
         4. Assign the Allow permission for Write all properties and Apply to this object and all child objects.
         5. Click OK.
 
   5. On the Secondary computer account (Secondary Management Name):
         1. Navigate to the Security tab and click Advanced.
         2. On the Permissions tab, click Add.
         3. Select the user to run the SetSPN command (this can be the same user that runs SQL Server ie. 2a-net\sqlservervc).
         4. Assign the Allow permission for Write all properties and Apply to this object and all child objects.
         5. Click OK."

der "korrekte" Weg...

Mit Windows 2012 gibt es da noch ein Problem - eine etwas strengere Handhabung mit registered Services.

Was heißt das?

Wenn man von Knoten A auf Knoten B umschaltet, muss man den SQLService vom Knoten A deregistrieren und bei Knoten B registrieren.

Das führt dann zu separaten Scripten für beide Knoten:

setSPN_A.bat
setspn.exe -D MSSQLSvc/<FQDNCLUSTERNAME>:MSSQLSERVER <SHORT_NODE_NAME_B>
 
ping -n 10 0 >NUL
 
setspn.exe -a MSSQLSvc/<FQDNCLUSTERNAME>:MSSQLSERVER <SHORT_NODE_NAME_A>
setSPN_B.bat
setspn.exe -D MSSQLSvc/<FQDNCLUSTERNAME>:MSSQLSERVER <SHORT_NODE_NAME_A>
 
ping -n 10 0 >NUL
 
setspn.exe -a MSSQLSvc/<FQDNCLUSTERNAME>:MSSQLSERVER <SHORT_NODE_NAME_B>