Zielsetzung
Ich hatte lokal isolierte Hosts. Ich möchte, dass sie alle die gleiche Zeit haben. Einer übernimmt die Rolle des Zeitservers, die anderen synchronisieren sich als Clients damit.
Alle Maschinen haben sporadische Betriebszeiten. Sie werden selten mit Strom versorgt. Daher können sie einen erheblichen Zeitversatz aufweisen. Der gesamte Host-Satz sollte innerhalb weniger Minuten nach dem manuellen Einstellen der lokalen Serverzeit synchronisiert werden.
Um die Zuverlässigkeit zu bestätigen, habe ich die Verbindung des NTP-Hosts getestet, indem ich lange manuelle Anpassungen vorgenommen habe (mehrere Stunden) und gemessen habe, wie schnell die Clients synchronisiert wurden.
ntpd - ntpd-Fall
Ich habe versucht,ntpdsowohl für Clients als auch für den Server.ntpdDas Einstellen der Uhr dauert sehr lange. Außerdem weigert sie sich, die Zeit um ein paar Stunden zurückzudrehen.
Wenn es behoben werden könnte, würde ich lieber verwendenntpdals Client. Ich suche also nach Konfigurationsoptionen, um ntpd Hinweise zu geben, wie er Netzwerkuhr-Updates eifrig akzeptieren soll.
Aber wenn es keine Möglichkeit gibt, zu beschäftigenntpd,ntpdateAlternative ist immer noch akzeptabel.
ntpd - ntpdate-Fall
ntpdateaktualisiert die Uhr perfekt und ohne zu zögern. Ich habe es in eine Cron-Aufgabe eingefügt und eine grobe, aber funktionierende Lösung erhalten. Leider war der erste Eindruck falsch. Nach mehreren Tests stellte ich fest, dass dientpdateDer Client begann, den Server abzulehnen. Aus irgendeinem Grund entschied sich der Server, Stratum 16 zurückzugeben. Ich habe ausdrücklich fudge 127.127.1.0 stratum 8
in dientp.confauf der Serverseite, um genau dieses Verhalten zu vermeiden. Aberntpdate -v -dDie Ausgabe zeigt „Stratum 16“, das vom Server übertragen wurde.
Ich sehe also zwei Möglichkeiten. Entweder zwingt man dientpdServer kehrt Stratum 9 zurück, unabhängig von der lokalen Zeitsprüngen oder erzwingen dientpdateClient, jeden Server zu akzeptieren, auch wenn dieser Stratum 16 hat.
Ich habe versucht, auf beide Arten zu googeln, aber nichts gefunden. Kann jemand geeignete Konfigurationsoptionen vorschlagen?
Antwort1
Verwenden Sie einen ntpd
Zeitserver für alle. Alle täglich neu gestarteten PCs können ihre Uhren beim Start per ntpdate
Befehl synchronisieren. Uhren auf anderen Servern können per ntpd
Dienst synchronisiert werden, da dieser die Zeit sanft anpasst.
Für ntpd
die Verwendung des Hauptzeitservers:
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 2
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust
restrict 127.0.0.0/8
disable auth
logfile /var/log/ntp.log
Antwort2
Mein Hauptvorschlag: Tun Sie das nicht. Versuchen Sie, Ihre Anforderungen oder Einschränkungen so zu ändern, dass Sie ein ständig verfügbares System haben, das eine Zeitquelle sein kann, oder dass Ihre Systeme nicht isoliert sind und Zeit vomglobaler NTP-Pool, oder beides.
Heutzutage sind stromsparende NTP-Server mit GPS-Empfängern recht günstig erhältlich. Wenn Sie gerne selbst Hand anlegen, können Sie BeagleBones und Raspberry Pis für unter 100 US-Dollar in NTP-Server verwandeln. Wenn Sie etwas von der Stange möchten, probieren Sie einenLeoNTP.
Nächster Vorschlag: Wenn ntpd
das Aktualisieren der Uhr lange dauert, müssen Sie wahrscheinlich Ihre Konfiguration überprüfen:
-G
Stellen Sie sicher, dass Sie das Befehlszeilenflag verwenden .-g
Dies ist bei einigen Linux-Distributionen die Standardeinstellung, führt jedoch nicht zu großen Rückschritten.- Stellen Sie sicher, dass alle Ihre Server/Pools mit konfiguriert sind
iburst
. - Verwenden Sie
tinker step 0.5
und , um die Fähigkeit von zum Korrigieren großer Abweichungentinker panic 0
zu maximieren .ntpd
- Stellen Sie sicher, dass Ihre Drift-Datei beschreibbar ist
ntpd
und beim Herunterfahren korrekt gespeichert wird.
Dritter Vorschlag (den ich vorziehen würde ntpdate
): Versuchen Sie es chrony
– es bietet explizite Unterstützung für gelegentlich verbundene Clients (wie Laptops, die regelmäßig angehalten werden). Die chrony.conf(5)
Manpage enthält alle Einzelheiten dazu. Wenn Sie eine Distribution verwenden, bei der chrony
die Standardeinstellung ist (CentOS/Red Hat und Ubuntu nach der Veröffentlichung von 18.04), wäre dies wahrscheinlich mein zweiter Vorschlag.
Letzter Vorschlag: Wenn ntpdate
ein Server als Stratum 16 gemeldet wird, bedeutet dies, dass mit diesem Server etwas nicht stimmt. Versuchen Sie, die Konfiguration des Servers und die Ausgabe von zu posten, ntpq -np
damit ntpq -nc rv
wir bei der Diagnose helfen können.