NTP-Zeitsynchronisation in VMware vSphere konfigurieren

    Topologie der Zeitsynchronisierung via NTPFür den reibungs­losen Betrieb von vSphere ist es erfor­derlich, dass die System­zeit der ESXi-Hosts, von vCenter und der Gast­betriebs­systeme über­ein­stimmt. Diese Anlei­tung zeigt, wie man die Uhren zwischen diesen Kompo­nenten über einen Domain-Controller synchro­nisiert.

    Mehrere vSphere-Features benötigen abgestimmte Systemzeiten zwischen den Bestandteilen einer virtuellen Infrastruktur. Das gilt etwa für die Hosts in einem HA-Cluster, die sich gegenseitig auf Erreichbarkeit prüfen. Außerdem erfordert die Authentifizierung über Kerberos eine synchrone Zeit zwischen den beteiligten Systemen. Das gilt auch dann, wenn man sich über SSO im Platform Service Controller anmeldet.

    ESXi-Hosts

    Der NTP-Daemon im ESXi-Host fungiert als NTP-Client gegenüber einem Referenz-Zeitserver und verteilt die Zeit an die eigenen VMs. Ein NTP-Server lässt sich über den alten C#-Client, den integrierten Host-Client oder den Web-Client konfigurieren. Im Web-basierten vSphere Client findet sich die entsprechende Einstellung unter Konfigurieren => System => Uhrzeitkonfiguration. An dieser Stelle können Sie übrigens auch die Ortszeit des vSphere-Clients sehen bzw. einstellen.

    NTP für ESXi-Hosts konfigurieren im vSphere Web Client

    Hinsichtlich der Zeitstempel in den Log-Dateien sollten Sie jedoch bedenken, dass ein ESXi-Host intern immer UTC verwendet, weil er generell über keine Informationen zu den Zeitzonen verfügt. Sehen Sie also im vSphere-Client die aktuelle Ortszeit, dann liegt es daran, dass er die UTC in seine lokale Zeit übersetzt. In der Praxis kommt es daher zu Abweichungen zwischen der Ereignis-Anzeige im vSphere Client und den Zeitstempeln in den Log-Dateien.

    Darüber hinaus sollten Sie daran denken, die Uhrzeit im BIOS der ESXi-Hosts entsprechend zu setzen, falls Sie ihre Systemzeit nicht via NTP beziehen möchten. Ferner gibt es verschiedene CLI-basierte Möglichkeiten, die Host-Zeit ohne Reboot zu ändern, etwa mit Hilfe des date-Kommandos auf der ESXi-Shell:

    date -s "14 Aug 2017 14:00:00"

    oder via esxcli:

    esxcli system time set -d 14 -M 8 -y 2017 -H 14 -m 0 -s 0

    vCenter Server

    Auch ein vCenter-Server kann seine Zeit direkt von einem NTP-Server holen. Konfiguriert wird dies bei der Linux-basierten vCSA nicht im Web-Client, sondern an der VAMI-Konsole, die man über eine HTTPS-Verbindung auf Port 5480 öffnet. Dort gibt es einen eigenen Abschnitt Time.

    Die Zeiteinstellungen für die vCenter Server Appliance lassen sich über das VAMI konfigurieren.

    Da ein vCenter nicht selten in einer VM der gleichen Umgebung läuft, wie dies typischerweise bei vCSA der Fall ist, kann es für den Zeitbezug auch als normale VM betrachtet werden. Sie würde dann beim Start ihre Zeit vom Host beziehen, wenn die VMware Tools installiert und entsprechend konfiguriert sind.

    Virtuelle Maschinen

    Virtuelle Maschinen bzw. die Gastsysteme in den VMs können ihre Zeitinformation beim Starten oder beim Aufwecken aus dem Suspend-Modus vom ESXi-Host beziehen, sofern die VMware Tools installiert sind. Diese re-synchronisieren die VM-Zeit im Lebenszyklus einer VM sowohl ereignis­getrieben, als auch periodisch.

    Allerdings müssen Sie dieses Verhalten in den Einstellungen der VM aktivieren. Folgende Abbildung zeigt das Vorgehen für den Web-Client unter Einstellungen Bearbeiten => VM-Optionen im Abschnitt VMware Tools bei Uhrzeit.

    Bei Bedarf kann die Zeit des Gastsystems über die VMware Tools mit dem Host synchronisiert werden.

    Dieses Verfahren ist aber in den meisten Fällen nicht zu empfehlen. Ganz abschalten können Sie es aber leider nicht  einfach dadurch, dass Sie den Haken wieder entfernen oder gar nicht erst setzen. VMware wird die Zeit dann zwar nicht mehr turnusmäßig synchronisieren (Default 60 Sekunden), gleicht die Zeit aber im bestimmten Situationen (Snapshots, Systemstart, vMotion) trotzdem noch ab. Um auch dies zu verhindern, hilft nur ein Eingriff in die .vmx-Datei, indem Sie folgende Einträge auf FALSE bzw. 0 setzen:

    tools.syncTime = "0"
    time.synchronize.continue = "0"
    time.synchronize.restore = "0"
    time.synchronize.resume.disk = "0"
    time.synchronize.shrink = "0"
    time.synchronize.tools.startup = "0"
    time.synchronize.tools.enable = "0"
    time.synchronize.resume.host = "0"

    Übrigens setzen die VMware-Tools die Zeit beim Re-Synchronisieren nicht einfach neu, sondern beschleunigen den Interrupt-Timer.

    In den meisten Szenarien ist es günstiger, wenn Sie das Gast-System in Ihrer VM so konfigurieren, dass es selbst Zeitinformationen von einem NTP-Server bezieht. Es gibt aber noch einen weiteren Faktor, der die Uhrzeit im Gastsystem beeinflusst. Existiert nämlich im Netzwerk ein Domänen-Controller, dann beziehen zumindest die Windows-VMs, die Mitglied der Domäne sind, standardmäßig ihre Uhrzeit von dort.

    Zeit von ESXi mit Domänen-Controller synchronisieren

    Es ist meist nicht empfehlenswert, am Host für NTP einen Zeit-Server im Internet einzurichten, weil Sie am ESXi-Server dann generell den Internet-Zugriff durch Eintragen eines passenden Internet-Gateways erlauben müssten.

    Gibt es im Netzwerk einen Domänencontroller bzw. PDC-Emlator, dann können Sie diesen stattdessen als Zeitquelle für Ihre ESXi-Hosts eintragen. Er sorgt dann gleichzeitig dafür, dass auch die VMs, die Mitglied der Domäne sind, beim Login ihre Zeit von dort beziehen.

    Beim Anmelden einer solchen VM in der Domäne erhält diese ein Kerberos-Ticket mit Datum und Uhrzeit und muss beide Informationen weiterführen. Mit Ihren VMs sind Sie damit schon mal auf der sicheren Seite.

    Jetzt müssen Sie den PDC-Emulator nur noch dazu bewegen, seine Zeitinformationen auch einem anfragenden ESXi-Host mitzuteilen. Das hier beschriebene Vorgehen ändert dafür Einträge in der Registry, alternativ kann man dafür auch die Gruppenrichtlinien einsetzen.

    Zunächst ermitteln Sie im Tool Active Directory-Benutzer und -Computer, wer die Rolle des PDC-Emulators innehat.

    Dazu wählen Sie im Kontextmenü der Domäne den Eintrag Operation Masters (Betriebsmaster) aus und navigieren zum Reiter PDC. In kleinen Umgebungen ist das meist die gleiche Maschine wie der Domänen Controller selbst.

    PDC für eine Domäne ermitteln in AD-Benutzer und -Computer

    Anschließend starten Sie auf dieser Maschine Regedit mit administrativen Rechten und navigieren zum Schlüssel HKEY_LOCAL_MACHINE\­SYSTEM\Current­Control­Set\Services\W32Time. Überprüfen Sie dann im Unterschlüssel Parameters den Eintrag bei Type und ändern ihn ggf. von NT5DS auf NTP. Den zu verwendenden NTP-Server tragen Sie bei NTPServer ein.

    Externen NTP-Server für den Domänen-Controller in die Registry eintragen.

    Jetzt müssen Sie nur noch im Unter­schlüssel W32Time\Config den Eintrag bei AnnounceFlags von 10 auf 5 abändern, wodurch Sie ihrem Domänen-Controller fest die Rolle eines Zeitservers zuweisen (DomainRole = 5).

    Domänen-Controller in der Registry die Rolle als Zeit-Server zuweisen

    Anschließend müssen Sie den Zeitdienst neu starten, was Sie am schnellsten mit

    net stop w32time

    und

    net start w32 time

    erreichen. Die Zeitsyn­chronisation mit dem neuen NTP-Server stoßen Sie dann mit

    w32tm /resync /rediscover

    an. Sie kommen damit der in jeder Windows-Domäne bzgl. der Zeitsyn­chronisation zu erfüllenden Forderung

    Externe Zeitquelle [NTP] => PDC Emulator [NT5DS] => weitere Server (z. B. ESXi) + Clients

    nach.

    Keine Kommentare