Ich habe ungefähr 20 Linux-Server und möchte alle ihre Uhren mit einem einzelnen NTP-Server synchronisieren, der sich im selben Rack und Switch befindet wie meine Server. Nichts ist virtualisiert.
Unsere Administratoren haben Probleme, die Uhren der verschiedenen Maschinen näher als etwa 500 ms zu synchronisieren. Ich hätte es erraten, und dieser Beitrag impliziert, dass wir in der Lage sein sollten, die Linux-Boxen innerhalb von 2 ms von der Quelle und voneinander zu synchronisieren.
Sind meine Erwartungen an NTP nicht zumutbar? Irgendwelche Hinweise, was die Administratoren tun / überprüfen sollten?
Antworten:
Ich besitze eine Hosting-Firma und wir machen genau das. So erreichen wir das.
Zunächst benötigen Sie eine NTP-Masterquelle. So wird einer Ihrer Linux-Server zum Master. Ich würde einen DNS A-Eintrag namens time.example.com erstellen (vorausgesetzt, example.com ist die Domain). Auf diese Weise müssen Sie die anderen 19 Server nicht aktualisieren, wenn Ihr Master umzieht.
Auf dem Master-Server benötigen Sie eine entsprechend konfigurierte ntp.conf-Datei.
So sieht eine unserer Master-Dateien /etc/ntp.conf aus. Beachten Sie, dass dies ein Rechenzentrum mit einem privaten Adressraum (RFC1918) ist, der 172.17.xx verwendet, sodass Sie entsprechende Anpassungen vornehmen müssen. Wenn Sie mehr als einen Master möchten, erstellen Sie mehr als einen DNS A-Eintrag mit jeweils unterschiedlicher IP, um auf Wunsch eine gewisse Fehlertoleranz zu erzielen.
Jetzt haben wir auf jedem Client eine /etc/ntp.conf-Datei, die folgendermaßen aussieht:
Verwenden Sie den Befehl ntpq, um die Server anzuzeigen, mit denen Sie synchronisiert sind. Sie erhielten eine Liste der konfigurierten Zeitserver sowie die Verzögerung, den Versatz und den Jitter, die Ihr Server mit ihnen hat. Für eine korrekte Synchronisation sollten die Verzögerungs- und Versatzwerte ungleich Null sein und der Jitterwert sollte unter 100 liegen.
Auch auf unseren Client-Knoten haben wir ein RC-Skript (/etc/rc.d/rc.local), das die Uhr synchronisiert, bevor der NTPD-Daemon gestartet wird. Hier sind die wichtigen Teile ... Sie sind auftragsabhängig.
Synchronisieren Sie die Uhr des Clients mit der Hauptzeitquelle / usr / sbin / ntpdate -b time.example.com
Starten Sie den NTPD-Daemon, um während des Startvorgangs umfangreiche Zeitanpassungen vorzunehmen. / usr / sbin / ntpd -g -x
Abhängig von Ihrer Einrichtung müssen Sie eine Firewall-Regel festlegen, damit Ihr time.example.com-Master über den UDP-Port auf das öffentliche Internet zugreifen kann. Hier ist eine typische und entsprechend platzierte IPTables-Regel
iptables -t nat -A POSTROUTING -o $ PUB_IF -p udp --dport 123 -j MASQUERADE
Wobei PUB_IF die öffentliche Schnittstelle ist (eth0, eth1, was auch immer)
quelle
multicastclient
undbroadcastdelay
das ist der Schlüssel, dann sag es.restrict source blah blah
anstelle der vier Zeilen für jeden Poolserver verwendet werden.Richtig konfiguriertes NTP erreicht die Synchronisation innerhalb weniger ms. Ich stelle immer sicher, dass jeder NTP-Client mit mindestens drei NTP-Servern kommuniziert.
Verwenden Sie
ntpq -p
diese Option , um den Status zu überwachen. Dies sollte einen Hinweis darauf geben, warum Sie keine bessere Synchronisierung erhalten.quelle
Ich bin nicht sicher, ob Sie so viel weniger Zeit für die Synchronisierung erreichen können, aber durch die korrekte Konfiguration des NTP-Servers werden die Server fast 10 bis 20 ms synchronisiert, die ich auf meinen Servern durchgeführt habe. Minimieren Sie die Driftzeit. Es ist nicht unmöglich, das zu bekommen, aber nachdem Sie den NTP-Server eingerichtet und alle Server auf diesen NTP-Server verwiesen und die Zeit zum ersten Mal manuell synchronisiert haben, wird der Zeitunterschied zwischen den Servern verringert.
quelle