Richtige NTP-Konfiguration für einige Server

9

Ich habe ungefähr 20 Linux-Server in einem kleinen Netzwerk und ich brauche ihre Uhren anständig nahe beieinander (z. B. innerhalb von 20 ms). Ich habe mit jedem von ihnen begonnen, der mit europe.pool.ntp.org synchronisiert ist, und die Arbeit ist erledigt.

Jetzt habe ich zwei Fragen:

  1. Bin ich eine spürbare Belastung für den Pool? Dh macht es einen merklichen Unterschied für den Pool, wenn ich von 20 Servern oder von 2 aus treffe?
  2. Wenn es einen Unterschied macht, wie ist die Einrichtung / Konfiguration, die mein Subnetz synchronisiert und den Pool unter geringer Last hält? Es gibt Richtlinien für große Netzwerke ( http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101 ), aber ich habe keine für kleine Netzwerke gefunden.
ndemou
quelle
1
Normalerweise sollten Sie einen oder zwei interne Zeitserver haben, mit denen Sie Ihr internes Netzwerk synchronisieren. Ihre beiden internen Server können eine peerBeziehung haben. Siehe zum Beispiel ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki
Danke für die Kommentare und den Link Marki. In Bezug auf den Link wird darauf hingewiesen, dass es sich um ein "riesiges Netzwerk" handelt, was sicherlich nicht mein Fall ist. Zu Ihrem Vorschlag: Ich halte einen internen Zeitserver nicht für eine gute Idee (Single Point of Failure), aber 2 sehen nach einer guten Idee aus. Können Sie erklären, was eine Peer-Beziehung ist (oder einen Link bereitstellen)?
ndemou
Sollte auch beachten, dass ich definitiv kein NTP-Experte bin - weit davon entfernt :-)
ndemou
Wird nicht schaden, wenn Sie ein wenig darüber googeln, was ein Peer ist. Beachten Sie, dass diese Site nichts auf einem Silbertablett serviert, wenn die Leute selbst überhaupt nicht recherchieren.
Marki
Versteh mich nicht falsch, ich habe meine Hausaufgaben gemacht, aber NTP ist eines dieser Themen, bei denen die meisten Dokumentationen entweder zu verschluckt (dies ist die ntp.conf - verwenden Sie sie einfach) oder zu tief (50 Seiten Betriebstheorie, um sie vor Ihnen zu lesen) sind kann anfangen, die grundlegenden Fakten zu erfassen).
ndemou

Antworten:

8
  1. Bin ich eine spürbare Belastung für den Pool? Dh macht es einen merklichen Unterschied für den Pool, wenn ich von 20 Servern oder von 2 aus treffe?

Angesichts der Tatsache, dass der Pool seit vielen Jahren ständig Server benötigt (siehe [1]), würde ich sagen, dass Sie immer daran denken sollten, dass Sie nicht allein sind, obwohl 2 oder 20 Server keinen wirklichen Unterschied machen. Denken Sie also besser an 1000 Administratoren. In diesem Fall handelt es sich um 2000 oder 20000 Server, und dies macht einen Unterschied.

  1. Wenn es einen Unterschied macht, wie ist die Einrichtung / Konfiguration, die mein Subnetz synchronisiert und den Pool unter geringer Last hält?

Sie müssen zwei [2] Server in Ihrem Netzwerk mit dem Pool synchronisieren (nennen wir sie primäre NTP-Server ) und dann alle anderen Server mit diesen beiden synchronisieren. Diese Methode hat auch den Vorteil, dass die Zeit zwischen all Ihren Servern besser übereinstimmt (innerhalb von weniger als 1 ms). Dies entspricht den Best Practices der IETF .

1) Die Konfiguration für die primären NTP-Server

Ersetzen Sie die serverund restrict-Zeilen Ihrer ntp [d] .conf durch die folgenden und behalten Sie den Rest bei Ihren Verteilungsstandards [3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      The LAN IP of the _other_ Primary NTP server 
server 0.europe.pool.ntp.org 
server 1.europe.pool.ntp.org 
server 2.europe.pool.ntp.org 
server 3.europe.pool.ntp.org 
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Bitte beachten Sie, dass diese Konfiguration auch Hosts aus dem gesamten Internet ermöglicht, Ihre Hostzeit über NTP-Abfragen abzufragen. Verwenden Sie Ihre Firewall, wenn Sie nicht möchten. In meinem Beispiel sind 10.11.12.1 und 10.11.12.2 die IPs der primären NTP-Server (sie haben zwei Netzwerkkarten, eine mit Blick auf das öffentliche Internet und eine mit dem lokalen Subnetz 10.11.12.x). Auf jedem primären NTP-Server ist der andere als Peer deklariert (Peer bedeutet im Grunde sowohl Server als auch Client - Sie verwenden den anderen Host als Zeitquelle und der andere Host verwendet Sie auch als Zeitquelle). So stellen Sie die IP auf der 1. Zeile , so dass die Konfiguration der einzelnen Primary NTP Server verweist auf die andere als Peer. Siehe [4] bezüglich meiner Wahl, 4 Server zu verwenden.

2) Die Konfiguration für alle anderen Server

2A) Wenn Sie zwei Netzwerkschnittstellen haben

Verwenden Sie besser die 2. Schnittstelle, um ein lokales Subnetz (z. B. 10.11.12.0/24) zu erstellen und dieses für NTP-Abfragen zu verwenden. In diesem Fall können die Begrenzungslinien enger sein. Ersetzen Sie also erneut die Zeilen serverund restrictIhrer ntp [d] .conf durch die folgenden und behalten Sie den Rest bei Ihren Distributionsstandards [3]:

restrict -4 default ignore
restrict -6 default ignore
restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

2B) Wenn Sie nicht über zwei Netzwerkschnittstellen verfügen

Sie sollten die folgenden Beschränkungszeilen verwenden (und den Hinweis zur Verwendung Ihrer Firewall zum Blockieren des Zugriffs auf Ihre NTP-Server oben lesen). Ersetzen Sie also erneut die Zeilen serverund restrictIhrer ntp [d] .conf durch die folgenden und behalten Sie den Rest bei Ihren Distributionsstandards [3]:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

Anmerkungen

[1] Von 2006 bis 2012 fordern sie ständig weitere Server an: die 2006- Anfrage, die 2009- Anfrage und die 2012- Anfrage . Unter www.pool.ntp.org finden Sie aktuelle Informationen zum aktuellen Status.

[2] Zwei primäre NTP-Server werden nur als einfache Möglichkeit zur Redundanz ohne komplizierte Hochverfügbarkeitsvereinbarungen vorgeschlagen. Sie können sich aus anderen Gründen für 3 oder 4 entscheiden (lesen Sie erneut die Best Practices der IETF ).

[3] In der Praxis und unabhängig von Ihrer Distribution ist das einzige, was Sie in Ihre ntpd-Konfiguration aufnehmen müssen, eine Zeile, die ein Verzeichnis zum Einfügen einer Driftdatei und einen Namen dafür definiert - z driftfile /var/lib/ntp/ntp.drift. Ich habe meine Lösung in CentOS, Debian und Ubuntu getestet. Ich denke, es funktioniert in den meisten anderen Distributionen.

[4] Ich habe 4 Poolserver gemäß den Best Practices konfiguriert . Das Konfigurieren von mehr als 4 Servern wird technisch akzeptiert, aber Sie erhöhen die Auslastung des NTP-Pools, um einen fragwürdigen Anstieg der Verfügbarkeit zu erzielen. Tun Sie dies also nicht. In den Best Practices sehe ich, dass "ab ntp-4.2.6 die 'pool'-Direktive" genug "Assoziationen aufwirbelt, um einen robusten Zeitdienst bereitzustellen" , wenn Sie also .pool verwenden. Adressen wie hier und ntp> = 4.2.6 Die genaue Anzahl der Serverleitungen spielt wahrscheinlich keine Rolle.

Rant Oh! Ich hasse NTP (außer dass ich es mag, dass es funktioniert). Die offizielle Dokumentation ist voll von veralteten Informationen und sie haben "Wie verwende ich sie?" Informationen gemischt mit wissenschaftlichen Details über die Interna. Und ich hasse es auch, wie es restrict 127.0.0.1wirklich bedeutetallow everything for 127.0.0.1


Verlauf der Updates

Ich habe die iburstOption aus der Konfiguration der lokalen NTP-Server entfernt, da ihre Freundlichkeit für den Pool umstritten ist. (Zeige Kommentare). Wenn Sie sie entfernen, dauert die erste Synchronisierung nur einige Minuten .


Credits

Kommentare und Antworten der SF-Benutzer Marki und Sven lieferten einen guten Ausgangspunkt für diese Antwort. Vielen Dank an beide.

ndemou
quelle
1
+1 von mir. Ich betreibe einen Poolserver und kann die Richtigkeit dieses Beitrags nicht überbetonen, außer dass dies iburstein ärgerlicher Parameter ist, der auf öffentlichen Servern verwendet werden muss. Bitte nicht (obwohl es nicht so ärgerlich ist wie burst). Pool-Server-Administratoren tun Ihnen einen Gefallen, ohne zu wissen, wer Sie sind, und ohne sich selbst zu belohnen, nur um das Internet besser laufen zu lassen. Wenn Sie durch härteres Arbeiten ihr Leben leichter machen können, sind Sie es ihnen schuldig.
MadHatter
Danke MadHatter. In Bezug auf iburst dachte ich, dass es für typische "Always on" -Server in Ordnung ist. Haben Sie Links, die Ihren Rat unterstützen, diese Option nicht zu verwenden? (Ich habe www.pool.ntp.org/en/use.html überprüft und auch 10 Minuten gegoogelt, aber nichts aussagekräftiges gefunden)
ndemou
Ich werde gerne meine Verkehrsstatistiken teilen; Ein kurzes Beispiel zeigt, dass falsch konfigurierte Hosts, dh Hosts, die häufiger als einmal pro Minute übertragen, etwa 45% meiner Kunden ausmachen, aber für etwa 75% des Datenverkehrs verantwortlich sind. Das wird meistens von Servern sein, die verwenden burst, iburstsagt aber sogar (von der ntpdManpage) " mit dieser Option wird eine Salve von Nachrichten ausgetauscht, um die Daten zu pflegen und die Uhr in ungefähr 10s einzustellen ". Die Verwendung von iburst" Meine Uhr schnell einstellen ist wichtiger als die Last auf Ihrem Server niedrig zu halten " ist unhöflich.
MadHatter
Sie haben Recht mit der "Salve von Nachrichten", aber soweit ich verstehen kann, tritt dieser Burst nur während des Starts des NTP-Daemons auf und (möglicherweise) wenn der Poolserver momentan nicht erreichbar ist (ich bin von Anfang an). Hier ist eine Zusammenfassung der NTPd-Seite des Arch-Wikis: "Die Option iburst wird empfohlen und sendet nur dann einen Paket-Burst, wenn beim ersten Versuch keine Verbindung hergestellt werden kann. Die Burst-Option führt dies auch beim ersten Versuch immer aus sollte niemals ohne ausdrückliche Genehmigung verwendet werden und kann zu einer schwarzen Liste führen ".
ndemou
Sie haben Recht, das iburstist viel weniger zu beanstanden als burst. Mein Punkt ist, dass es ein Argument gibt, wenn Sie die Ressource eines anderen kostenlos nutzen, dass Sie sich nach hinten beugen sollten, um Rücksicht zu nehmen. Nur nicht aktiv rücksichtslos zu sein, kann nicht als ausreichend angesehen werden. Ich bin damit einverstanden, dass dies als bewährte Methode bezeichnet wird. In diesen Dokumenten wird jedoch nicht berücksichtigt, ob die Upstream-Server, mit denen Sie synchronisieren, Teil Ihres Unternehmens sind oder nicht. Sie diktieren eher technische Best Practices (die, wie ich zustimme, zu verwenden sind iburst) als soziale Best Practices.
MadHatter
6

Der übliche Ansatz hierfür ist die Verwendung eines abgestuften Setups. Sie synchronisieren einen oder zwei Server in Ihrem Netzwerk mit dem Pool und verwenden diese dann als lokale Zeitquelle. Diese Ebenen werden im NTP-Jargon als Schichten bezeichnet .

Denken Sie auch darüber nach: Wenn Sie dies so tun, wie Sie es beschrieben haben, wird es nicht wirklich auffallen, aber wenn 1000 Websites Ihrer Größe damit beginnen, erhalten Sie 20.000 meist unnötige Anfragen und irgendwann wird es auffällig.

Lesen Sie http://en.wikipedia.org/wiki/Network_Time_Protocol

Sven
quelle
Aber denken Sie an den alternativen Standpunkt - zwanzig weitere Kunden über Millionen bestehender Kunden sind kaum etwas.
200_erfolg
2
Wie er sagte, wenn alle anfangen, so zu denken ...
Marki
Aber an welchem ​​Punkt hörst du auf? Denken Sie an alle Geräte der Linksys-Klasse, die für die Verwendung vorkonfiguriert geliefert werden pool.ntp.org. Sicherlich übersteigt der DNS-Verkehr den NTP-Verkehr. Müssen Sie DNS auch lokal zwischenspeichern? Selbst der DNS-Verkehr ist im Vergleich zum Rest Ihres Bandbreitenverbrauchs wahrscheinlich winzig.
200_erfolg
@ 200_success: Dies ist keine Debatte wert, aber die meisten Geräte der "Linksys-Klasse" zwischenspeichern tatsächlich den DNS-Verkehr lokal und fragen ihren ISP-DNS ab, der ebenfalls zwischengespeichert wird ...
Sven
1
Wenn Linksys Geräte versendet, mit denen synchronisiert wird, ntp.pool.orgverstößt dies gegen die Poolbedingungen . Wenn sie es richtig gemacht haben, indem sie eine Lieferantenzone beantragt haben (siehe Link), wurde auch erwartet, dass sie proportional zu ihrer Auslastung zum Poolprojekt beitragen (siehe auch Link).
MadHatter