Prawidłowa konfiguracja NTP dla kilku serwerów

9

Mam około 20 serwerów Linux w małej sieci i potrzebuję ich zegarów przyzwoicie blisko siebie (np. W ciągu 20 ms). Zacząłem od synchronizacji każdego z nich z europe.pool.ntp.org i zadanie zostało wykonane.

Teraz mam dwa pytania:

  1. Czy jestem zauważalnym obciążeniem puli? Czy to robi jakąś zauważalną różnicę w puli, jeśli uderzam z 20 serwerów lub z 2?
  2. Jeśli to robi różnicę, jaka jest konfiguracja / konfiguracja, która pozwoli zsynchronizować moją podsieć i pule obciążone? Istnieją wytyczne dla dużych sieci ( http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101 ), ale nie znalazłem żadnej dla małych sieci.
ndemou
źródło
1
Zwykle powinieneś mieć jeden lub dwa wewnętrzne serwery czasu, z którymi synchronizujesz swoją sieć wewnętrzną. Twoje dwa wewnętrzne serwery mogą mieć peerzwiązek. Patrz na przykład ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki
Dzięki za komentarze i link Marki. Odnosząc się do linku, zauważa, że ​​jest to „ogromna sieć”, co z pewnością nie jest moim przypadkiem. Jeśli chodzi o twoją sugestię: nie sądzę, aby jeden wewnętrzny serwer czasu był dobrym pomysłem (pojedynczy punkt awarii), ale 2 wyglądają jak dobry pomysł. Czy możesz wyjaśnić, czym jest relacja rówieśnicza (lub podać link)?
ndemou
Należy również zauważyć, że zdecydowanie nie jestem ekspertem od NTP - daleko od :-)
ndemou
Nie zaszkodzi, jeśli przejrzysz trochę na temat tego, czym jest rówieśnik. Pamiętaj, że ta strona nie obsługuje niczego na srebrnym talerzu, gdy ludzie w ogóle nie prowadzą badań.
Marki
Nie zrozum mnie źle, odrobiłem pracę domową, ale NTP jest jednym z tych tematów, w których większość dokumentacji jest albo zbyt połykana (jest to ntp.conf - po prostu ją wykorzystaj), albo zbyt głęboka (50 stron teorii działania, aby przeczytać przed tobą może zacząć rozumieć podstawowe fakty).
ndemou

Odpowiedzi:

8
  1. Czy jestem zauważalnym obciążeniem puli? Czy to robi jakąś zauważalną różnicę w puli, jeśli uderzam z 20 serwerów lub z 2?

Biorąc pod uwagę, że pula od wielu lat stale potrzebuje serwerów (patrz [1]), powiedziałbym, że chociaż 2 lub 20 serwerów tak naprawdę nie robi różnicy, zawsze powinieneś pamiętać, że nie jesteś sam. Lepiej więc zastanów się, powiedzmy 1000 administratorów, w którym to przypadku mówimy o 2000 lub 20000 serwerów, a to robi różnicę.

  1. Jeśli to robi różnicę, jaka jest konfiguracja / konfiguracja, która pozwoli zsynchronizować moją podsieć i pule obciążone?

Musisz zsynchronizować dwa [2] serwery w sieci z pulą (nazwijmy je Podstawowymi serwerami NTP ), a następnie zsynchronizuj wszystkie pozostałe serwery z tymi dwoma. Ta metoda ma również tę zaletę, że czas między wszystkimi serwerami będzie ściślej dopasowany (w czasie krótszym niż 1 ms). Jest to zgodne z najlepszymi praktykami IETF .

1) Konfiguracja podstawowych serwerów NTP

Zamień wiersze serveri restrictpliku ntp [d] .conf na następujące, a resztę zachowaj do domyślnych ustawień dystrybucji [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

Należy pamiętać, że ta konfiguracja umożliwia również hostom z całego Internetu sprawdzanie czasu hosta za pomocą zapytań NTP. Użyj swojej zapory ogniowej, jeśli nie chcesz. W moim przykładzie 10.11.12.1 i 10.11.12.2 to adresy IP głównych serwerów NTP (mają dwie karty sieciowe, jedną skierowaną do publicznego Internetu, a drugą do lokalnej podsieci 10.11.12.x). Każdy Podstawowy serwer NTP ma drugi zadeklarowany jako peer (peer w zasadzie oznacza zarówno serwer, jak i klienta - używasz drugiego hosta jako źródła czasu, a drugi host używa Ciebie również jako źródła czasu). Tak ustawić IP na 1 linię tak, że konfiguracja poszczególnych punktów Podstawowa NTP Server do drugiego jako równorzędnego. Zobacz [4] odnośnie mojego wyboru używania 4 serwerów.

2) Konfiguracja dla wszystkich innych serwerów

2A) Jeśli masz dwa interfejsy sieciowe

Lepiej użyj drugiego interfejsu, aby utworzyć lokalną podsieć (np. 10.11.12.0/24) I użyj jej do zapytań NTP. W takim przypadku linie ograniczające mogą być bardziej ciasne. Więc ponownie zamień wiersze serveri restricttwojego ntp [d] .conf na następujące i pozostaw resztę domyślnym ustawieniom dystrybucji [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) Jeśli nie masz dwóch interfejsów sieciowych

Powinieneś użyć poniższych linii ograniczających (i przeczytać notatkę o używaniu zapory ogniowej do blokowania dostępu do serwerów NTP powyżej). Więc ponownie zamień wiersze serveri restricttwojego ntp [d] .conf na następujące i pozostaw resztę domyślnym ustawieniom dystrybucji [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

Notatki

[1] W latach 2006–2012 stale proszą o przyłączenie większej liczby serwerów: wniosek z 2006 r., Rok 2009 i rok 2012 . Sprawdź www.pool.ntp.org, aby uzyskać informacje na temat aktualnego stanu.

[2] Dwa podstawowe serwery NTP są sugerowane jedynie jako prosty sposób na nadmiarowość bez skomplikowanych uzgodnień dotyczących wysokiej dostępności. Możesz wybrać 3 lub 4 z innych powodów (ponownie przeczytaj najlepsze praktyki IETF )

[3] W praktyce i bez względu na dystrybucję jedyną rzeczą, którą musisz uwzględnić w konfiguracji ntpd, jest linia definiująca katalog do umieszczenia pliku drift i jego nazwę - np driftfile /var/lib/ntp/ntp.drift. Przetestowałem swoje rozwiązanie w CentOS, Debian i Ubuntu. Chyba działa w większości innych dystrybucji.

[4] Skonfigurowałem 4 serwery puli zgodnie z najlepszymi praktykami . Konfiguracja więcej niż 4 serwerów jest technicznie akceptowana, ale zwiększysz obciążenie puli NTP w celu uzyskania wątpliwego wzrostu dostępności, więc nie rób tego. W najlepszych praktykach widzę, że „poczynając od ntp-4.2.6, dyrektywa„ puli ” rozpali „ wystarczającą ”liczbę asocjacji, aby zapewnić niezawodną obsługę czasu”, więc jeśli używasz .pool. adresy tak jak tutaj i ntp> = 4.2.6 prawdopodobnie dokładna liczba linii serwera prawdopodobnie nie ma znaczenia.

Rant Oh! Nienawidzę NTP (poza tym, że podoba mi się, że to działa). Oficjalna dokumentacja jest pełna przestarzałych informacji i mają one „jak z nich korzystać?” informacje zmieszane ze szczegółami naukowymi na temat elementów wewnętrznych. Nienawidzę także tego, jak restrict 127.0.0.1naprawdę to oznaczaallow everything for 127.0.0.1


Historia aktualizacji

Usunąłem tę iburstopcję z konfiguracji lokalnych serwerów NTP, ponieważ ich przyjazność dla puli jest dyskusyjna. (Zobacz komentarze). Usunięcie ich dodaje tylko kilka minut oczekiwania na pierwszą synchronizację.


Kredyty

Komentarze i odpowiedzi od użytkowników SF Marki i Sven stanowiły dobry punkt wyjścia do tej odpowiedzi. Dzięki obojgu.

ndemou
źródło
1
+1 ode mnie Prowadzę serwer puli i nie mogę przecenić słuszności tego postu, z wyjątkiem tego, że iburstjest to irytujący parametr do stosowania na serwerach publicznych, więc proszę nie (chociaż nie jest to tak denerwujące jak burst). Administratorzy serwerów puli wyświadczają ci przysługę, nie wiedząc, kim jesteś i bez żadnej rekompensaty dla samych siebie, wyłącznie w celu lepszego korzystania z Internetu. Jeśli pracując ciężej, możesz ułatwić sobie życie, jesteś im to winien.
MadHatter
Dzięki MadHatter. Jeśli chodzi o iburst, pomyślałem, że jest OK dla typowych serwerów „zawsze na”. Czy masz jakieś linki, które potwierdzają twoją radę o nie korzystaniu z tej opcji? (Sprawdziłem www.pool.ntp.org/en/use.html, a także googlowałem przez 10 minut, ale nie znalazłem niczego rozstrzygającego)
ndemou
Z przyjemnością podzielę się statystykami ruchu; szybka próbka sugeruje, że źle skonfigurowane hosty, tj. hosty, które transmitują częściej niż raz na minutę, stanowią około 45% moich klientów, ale odpowiadają za około 75% ruchu. Będzie to w większości pochodziło z serwerów, które używają burst, ale nawet iburstmówi (ze strony podręcznika ntpd) „ z tą opcją wymiana salwy wiadomości w celu oczyszczenia danych i ustawienia zegara na około 10 sekund ”. Używanie iburstmówi „ szybkie ustawienie mojego zegara jest ważniejsze niż utrzymywanie niskiego obciążenia serwera ”, a to nieuprzejme.
MadHatter
Masz rację co do „salwy wiadomości”, ale o ile rozumiem, ten wybuch nastąpi tylko podczas uruchamiania demona NTP i (być może), jeśli serwer puli jest chwilowo nieosiągalny (i jest od początku). Oto streszczenie ze strony Arch wiki NTPd: „Opcja iburst jest zalecana i wysyła serię pakietów tylko wtedy, gdy nie może uzyskać połączenia z pierwszą próbą. Opcja serii zawsze robi to, nawet przy pierwszej próbie, i nigdy nie należy go używać bez wyraźnej zgody i może to prowadzić do umieszczenia na czarnej liście ”.
ndemou
Masz rację, co iburstjest o wiele mniej budzące zastrzeżenia burst. Chodzi mi o to, że kiedy używasz cudzych zasobów za darmo, istnieje argument, że powinieneś pochylać się do tyłu, aby być rozważnym; samo bycie aktywnym bezmyślnym nie może być uważane za wystarczające. Zgadzam się, że mówi się, że jest to najlepsza praktyka, ale dokumenty te nie biorą pod uwagę tego, czy serwery nadrzędne, z którymi synchronizujesz, są częścią twojego przedsiębiorstwa, czy nie; dyktują najlepsze praktyki techniczne (które, jak się zgadzam, należy stosować iburst), a nie najlepsze praktyki społeczne .
MadHatter
6

Zwykle stosuje się do tego konfigurację warstwową - synchronizujesz jeden lub dwa serwery w sieci z pulą, a następnie używasz ich jako lokalnego źródła czasu. Poziomy te nazywane są warstwami w języku NTP.

Pomyśl też: jeśli zrobisz to tak, jak to opisałeś, nie będzie to naprawdę zauważalne, ale jeśli 1000 stron o twoim rozmiarze zacznie to, otrzymujesz 20k przeważnie niepotrzebnych próśb, aw pewnym momencie staje się zauważalne.

Przeczytaj http://en.wikipedia.org/wiki/Network_Time_Protocol

Sven
źródło
Ale rozważ alternatywny punkt widzenia - dwadzieścia więcej klientów ponad miliony istniejących klientów to prawie nic.
200_success
2
Tak jak powiedział, jeśli wszyscy zaczną myśleć w ten sposób ...
Marki
Ale w którym momencie się zatrzymujesz? Pomyśl o wszystkich urządzeniach klasy Linksys, które są wstępnie skonfigurowane do użycia pool.ntp.org. Z pewnością ruch DNS przekracza ruch NTP. Czy musisz także buforować DNS lokalnie? Nawet ruch DNS może być niewielki w porównaniu z resztą zużycia przepustowości.
200_success
@ 200_success: Nie warto debatować, ale większość urządzeń klasy „Linksys” rzeczywiście buforuje ruch DNS lokalnie i odpytuje DNS ISP, który również buforuje…
Sven
1
Jeśli Linksys wysyła urządzenia, które synchronizują się ntp.pool.org, naruszają warunki puli ; jeśli zrobili to poprawnie, składając wniosek o strefę dostawcy (patrz link), wówczas oczekuje się również, że będą uczestniczyć w projekcie puli proporcjonalnie do ich obciążenia (ponownie, patrz link).
MadHatter