Was sind die Grenzen der Ausführung von NTP-Servern in virtuellen Maschinen?

15

Ich möchte mehrere Stratum 2-Zeitserver in meinem lokalen Netzwerk einrichten. Virtuelle Maschinen wären sicherlich eine billigere Möglichkeit, als drei 1U-Server zu kaufen. Welche Einschränkungen würde dies mit sich bringen? Inwieweit wird also die Genauigkeit beeinträchtigt?

Mein Instinkt ist außerdem, dass sich diese lokalen Zeitserver auf verschiedenen physischen Computern befinden sollten, um Hardware-Unregelmäßigkeiten zu minimieren. Ist diese Intuition richtig?

Bearbeiten Ich sollte sagen, dass ich mit "virtuellen Maschinen" nicht spezifisch VMware meinte . Ich meinte vielmehr das allgemeine Konzept der virtualisierten Instanzen.

James A. Rosen
quelle

Antworten:

19

Die einfache Tatsache ist, dass die Taktgenauigkeit innerhalb einer VM immer noch sehr schlecht ist. Dies kommt von einigen Stellen, aber das Schlimmste ist, dass die Zeitverschiebung nicht konstant ist; Der Driftfaktor ändert sich von Moment zu Moment. NTP ist ein Protokoll, in das eine Taktkompensation integriert ist, das jedoch einen statischen Driftfaktor aufweist. Wenn beispielsweise eine physische Maschine alle 30 Tage 12 Sekunden verliert, kann NTP dies kompensieren und dies funktioniert sehr gut. Wenn diese Maschine jedoch alle 30 Tage zwischen 4 und 70 Sekunden verlieren kann, ist NTP nicht in der Lage, diese Änderungsstufe zu verfolgen.

Was es für NTP wirklich schwierig macht, in einer VM-Umgebung Schritt zu halten, ist, dass die lokale Uhr, die sie sieht, ihren Driftfaktor im Laufe einer Minute ändern kann. Abhängig von der Frequenz, mit der die übergeordneten Zeitquellen überprüft werden, kann dies zu erheblichen Änderungen des Driftfaktors und zu einer weitaus häufigeren Störung der Synchronisation führen. Nicht synchronisierte Zeitkaskaden im gesamten Unternehmen.

NTP für ein lokales Netzwerk ist ein Protokoll mit relativ geringer Auswirkung und sehr geringem Speicherbedarf und kann problemlos auf andere Netzwerkinfrastrukturserver wie DNS- und DHCP-Server zurückgesetzt werden. Einige Router bieten auch NTP-Funktionen.

Idealerweise möchten Sie zwei separate Server an unterschiedlichen Standorten, die jeweils mit einer anderen Gruppe von Servern mit höherer Schicht synchronisiert werden. Es wäre auch eine sehr gute Idee, wenn beide Zeitserver so konfiguriert wären, dass sie den anderen Server als "Peer" verwenden, was die Auswirkungen auf den Zeitdienst minimiert, falls eine der Upstream-Zeitquellen ausfällt. Es wird eine Schichtänderung geben, die aber zumindest nicht als nicht synchron gemeldet wird. Und schließlich seien Sie nett zu Ihren Upstream-Zeitanbietern und konfigurieren Sie Ihre Server so, dass zwischen Abstimmungen eine sehr lange Zeit vergeht, sobald die Zeit feststeht. Dies ist der Parameter 'maxpoll' in der Zeile 'server' und eine Potenz von zwei Sekunden zwischen den Synchronisierungsversuchen.

Wenn Sie dafür unbedingt VMs verwenden müssten, würde ich nicht weniger als drei solcher NTP-Server einrichten. Jeder dieser Server muss sich auf einem anderen Host und, wenn möglich, in einem anderen Rechenzentrum befinden. Wie bei dem, was ich gerade angedeutet habe, brauchen sie unterschiedliche Zeitquellen und sollten miteinander in Kontakt treten. Konfigurieren Sie dann alle Ihre NTP-Clients so, dass alle drei als übergeordnete Quellen verwendet werden. Stellen Sie sicher, dass Ihre maxpoll-Werte niedrig genug sind, um zwischen Synchronisierungspaketen außerhalb des Netzwerks und 30 Minuten im Netzwerk nie länger als eineinhalb Stunden zu vergehen. Die Chancen stehen gut, dass mindestens einer der drei zu einem bestimmten Zeitpunkt synchron ist. Kunden, die nur mit einem Zeitrechner sprechen können, müssen sich nur mit gelegentlichen Synchronisationsproblemen abfinden. Insgesamt wäre die Zeitqualität in diesem Szenario nicht so genau wie bei physischen Servern.

Wenn ich parken müsste, würde ich sagen, dass Ihre Konsenszeit in der Pure-VM-Umgebung wahrscheinlich innerhalb von 30 bis 100 ms von True liegt. In einer rein physischen Umgebung würde Ihre Konsenszeit wahrscheinlich innerhalb von 10 ms liegen, wenn die Zeitserver lange genug für die Erledigung der Zeit in Betrieb waren.

sysadmin1138
quelle
1
Ich bin mir ziemlich sicher, dass ich mindestens drei und nicht nur zwei lokale NTP-Server haben möchte . Wie würde ein Kunde zwischen nur zwei unterscheiden?
James A. Rosen
Du brauchst mindestens vier aus arkanen Gründen. Das heißt, wir haben nur zwei interne Server, die mit einem halben Dutzend externer Server (und deren lokalen Uhren als Backups) synchronisiert sind. Funktioniert gut genug für uns.
James
James A Rosen - Das ist die Freude an der Peer-Group-Konfiguration. Solange mindestens ein Mitglied der Peer-Gruppe eine externe Verbindung hat und synchronisiert ist, ist die gesamte Peer-Gruppe synchronisiert. Kunden können eine Schicht herabsetzen, aber zumindest geraten sie nicht aus der Synchronität. Haben Sie drei in der Vergleichsgruppe? Kein Problem.
sysadmin1138
1
In Bezug auf die Anzahl der Server, die Sie benötigen, finden Sie alles hier: support.ntp.org . Wenn Sie nur eine auflisten, kann es keine Frage geben, die als "richtig" oder "falsch" eingestuft wird. [...] Mit zwei ist es unmöglich zu sagen, welches besser ist [...]. Dies ist eigentlich die schlechteste Konfiguration [...]. Mit drei Servern haben Sie die Mindestanzahl von Zeitquellen [...] Diese Konfiguration bietet keine Redundanz. Mit mindestens vier Upstream-Servern verfügt [...] ntpd über eine ausreichende Anzahl von Quellen zur Auswahl.
Mathieu
11

Siehe das Dokument zur VMware-Zeitmessung . Das Ausführen eines NTP-Daemons in einer VM ist wahrscheinlich keine gute Idee, insbesondere wenn Sie zuverlässige Zeit benötigen.

Zoredache
quelle
2
Haha - "vor allem, wenn Sie zuverlässige Zeit brauchen"
squillman
1
Ich könnte Ihnen nicht mehr zustimmen, tatsächlich kann ich mir keinen Server
vorstellen, der
6

Leider passen NTP und Virtualisierung nicht sehr gut zusammen. clients sind in den meisten fällen in ordnung, aber ntp server (esp str2 und höher) funktionieren auf virtuellen servern im allgemeinen nicht zuverlässig.

Ich kommentiere aus Sicht von Xen und Xen Enterprise, aber ich glaube, VMware / KVM wird genau das gleiche sein.

Da es sich um verschiedene Server handelt, haben Sie recht. Idealerweise sollten sie sich auch in verschiedenen Umgebungen befinden, damit Temperatur und Luftfeuchtigkeit die Genauigkeit nicht beeinträchtigen, aber zumindest kümmere ich mich nicht darum. Vergessen Sie auch nicht, dass das, was Sie tun, immer noch nicht so genau ist wie die richtige Atomuhr. Akzeptieren Sie einfach diese (sehr geringfügige) Abweichung.

rytis
quelle
1

Wenn Sie NTP in einer virtualisierten Umgebung ausführen, haben Sie das Glück, eine Genauigkeit von 20 ms zu erreichen (genau das haben wir mit VMware getan). Der Versatz der virtualisierten Uhr ist schlecht, insbesondere in einer virtualisierten Umgebung mit Ressourcenkonflikten.

Es hängt davon ab, wie genau Sie sein müssen. Wenn Sie sich nur um die Sekunde kümmern (z. B. für Webserver), ist dies wahrscheinlich in Ordnung, solange Sie keine Ressourcenkonflikte haben. Wenn Sie Millisekundengenauigkeit wünschen (z. B. eine ausgelastete Datenbank, ein Protokollserver oder ein Forschungsprojekt), vergessen Sie virtualisierte Zeitserver.

NTP-Server sollten sich immer auf physischen Hosts befinden. Sie sollten mindestens drei davon in einem Pool haben (damit ein Rogue-Server vom Pool abgewählt wird); und wenn möglich, beziehen Sie ihre Zeit lieber über GPS oder eine andere lokale Tier-0-Quelle als über das Internet.

Steve Shipway
quelle