Porównaj NTPD i ntpdate

23

Jakie są zalety i wady między tymi dwoma sposobami synchronizacji serwera?

Wydaje mi się, że twój serwer prawdopodobnie nie będzie dryfował dłużej niż 1 sekundę każdego dnia, więc ntpdate na crontabie będzie w porządku. Ale słyszałem, że możesz tutaj użyć redundantnych serwerów NTP

http://www.pool.ntp.org/en/use.html

w celu utrzymania zsynchronizowanego czasu w przypadku awarii.

Masz jakieś sugestie?

Nieznany
źródło

Odpowiedzi:

26

Algorytm NTP zawiera informacje pozwalające obliczyć i naprawić przesunięcie zegara serwera. NTPD obejmuje możliwość wykorzystania tego do synchronizacji zegara i będzie działał dokładniej niż zegar na komputerze, na którym NTPD nie jest uruchomiony. NTPD będzie również korzystać z kilku serwerów w celu poprawy dokładności.

ntpdate nie utrzymuje żadnego stanu świadczenia tej usługi, więc nie zapewni tego samego rodzaju dokładności. Pozwoli ci to dostarczyć listę serwerów, których użyje, aby zapewnić ci lepszy wynik, ale nie zastąpi to wyrafinowanych algorytmów zawartych w NTPD, które śledzą twój dryf z każdego z serwerów w czasie.

NTPDATE natychmiastowo koryguje czas systemowy, co może powodować problemy z niektórymi programami (np. Niszczenie sesji, która wydaje się teraz stara). NTPD celowo koryguje czas systemowy, unikając tego problemu. Możesz dodać przełącznik -g podczas uruchamiania NTPD, aby umożliwić NTPD dokonanie pierwszej aktualizacji dużej, która mniej więcej odpowiada jednokrotnemu uruchomieniu ntpdate przed uruchomieniem NTPD, co kiedyś było zalecaną praktyką.

Jeśli chodzi o kwestie bezpieczeństwa, serwery NTTP nie łączą się ponownie na niezainicjowanych połączeniach, co oznacza, że ​​zapora sieciowa powinna być w stanie powiedzieć, że zainicjowałeś żądanie NTTP i zezwolić na ruch powrotny. Nie powinno być potrzeby pozostawiania otwartych portów dla dowolnych połączeń, aby NTPD działał.

Ze strony podręcznika ntpdate (8):

Ntpdate można uruchomić ręcznie w razie potrzeby, aby ustawić zegar hosta, lub można go uruchomić ze skryptu uruchamiania hosta, aby ustawić zegar w czasie uruchamiania. Jest to przydatne w niektórych przypadkach, aby ustawić zegar początkowo przed uruchomieniem demona NTP ntpd. Możliwe jest również uruchomienie ntpdate ze skryptu cron. Należy jednak zauważyć, że ntpdate z wymyślonymi skryptami cron nie zastępuje demona NTP, który wykorzystuje zaawansowane algorytmy w celu maksymalizacji dokładności i niezawodności przy jednoczesnym zminimalizowaniu zużycia zasobów. Wreszcie, ponieważ ntpdate nie dyscyplinuje częstotliwości zegara hosta, podobnie jak ntpd, dokładność przy użyciu ntpdate jest ograniczona.

lambacck
źródło
Lepsze niż używanie ntpdate przed uruchomieniem ntpd: po prostu użyj -g!
Alex J
8

ntpd jest lepsze niż ntpdate, ponieważ dostajesz płynną korektę czasu zamiast skakać w czasie. Jaki sens mają twoje dzienniki, kiedy skaczą w nich czas wstecz? ntpdate będzie także w sposób przezroczysty przełączać między serwerami w razie potrzeby.

Jeśli chodzi o wymaganie otwartych portów (jak wspomniał Kyle), nowsze wersje ntpd (np. 4.2.4 na moim serwerze Debian) można skonfigurować do emisji / multiemisji do sieci LAN, z uwierzytelnianiem kryptograficznym.

Edycja: patrz także to pytanie .

pgs
źródło
5

Ogólnie zalecamy uruchomienie NTPD i zsynchronizowanie serwerów z wyznaczonym serwerem czasu w organizacji. Ten wewnętrzny serwer zazwyczaj synchronizuje się z jednym z publicznych serwerów NTP (jak się łączysz).

Użyłem metody ntpdate bez żadnego problemu, ale wydaje się to bardziej hackerskie niż uruchamianie prawdziwego demona ntpd.

Michael Gorsuch
źródło
3

Słyszałem o problemach z przesunięciem zegara na maszynach wirtualnych z uruchomionym NTTP. Słyszałem również o ludziach rozwiązujących ten problem, uruchamiając regularne zadania cron, które wywołują ntpdate na kilku serwerach puli. Nie miałem tych problemów, ale słyszałem o nich kilka razy.

Matt Simmons
źródło
1
Będą chcieli uruchomić bezczynne jądro na maszynie wirtualnej
goo
1
Oprogramowanie narzędzi VMware na maszynach wirtualnych ESX zajmuje się synchronizacją czasu, więc nie używaj ntpd na maszynach wirtualnych z narzędziami VMware. Zamiast tego skonfiguruj NTPD na hostach i pozwól narzędziom VMware zrobić resztę.
dunxd
3

Jak wspomniano w innym miejscu, NTP zapewnia płynną korektę czasu. Jeśli aplikacje na twoim serwerze nie przeszkadzają, że tracą całe sekundy lub powtarzają te same sekundy od nowa, to ntpd nie zyskuje dużo więcej niż ntpdate.

Z drugiej strony, jeśli masz aplikacje wrażliwe na czas, które są wrażliwe na sekundy lub nawet gorzej na częściowe sekundy, to ntpd jest zdecydowanie lepszym wyborem. Aktualizacje znaczników czasowych Novell eDirectory do obsługi aktualizacji i kolizji stają się krytyczne, jeśli aktualizacje przychodzą bardzo szybko (na przykład podczas porannego logowania). Serwer syslog musi mieć dokładny czas co najmniej do połowy sekundy, aby zachować rozsądne dzienniki.

W przypadku mojego urządzenia MythTV w domu zauważam, że jest to nawet kilka sekund wolnego od tego, co mój dostawca telewizji kablowej uważa za czas, więc używam na nim NTP. Na działający serwer monitorów UPS używam crontabbed ntpdate z tych samych powodów, na które zwrócił uwagę Kyle Hodgson, ponieważ jest to host bastionowy, nie chcę, aby ten port był otwarty, nawet jeśli zablokowałem aplikację; ponieważ ta aplikacja jest sekundą prawdy, nie jest straszna.

Jeśli chodzi o redundancję, utrzymujemy co najmniej dwa hosty czasowe w naszej sieci i wskazujemy wszystkim naszym hostom wewnętrznym te dwa. Ci dwaj następnie śledzą różnych internetowych hostów NTP. Co więcej, są skonfigurowane w układzie równorzędnym, dzięki czemu mogą zachować czas między sobą w sposób konsensusowy, jeśli nasz link internetowy przestanie działać. Solidne NTP jest zdecydowanie możliwe do zaprojektowania.

sysadmin1138
źródło
1

Na serwerze, na którym kluczowy jest dostęp i hartowanie, wykorzystałem argumentację, że xntpd, wersja ntpd, na której polegałem, wymagał otwartego portu UDP 123. Ponieważ wolałem mieć otwarte tylko tcp 22 i 80, użyłem ntpdate zamiast tego w crontab. Nigdy nie słyszałem dobrego powodu, dla którego było to potrzebne, ani żadnego takiego, który pamiętam.

Jedną z wad używania wywołanego przez crontab'at wywołania ntpdate jest to, że nie może on elegancko obsłużyć korekcji znoszenia. ntpdate, iirc, aktualizuje zegar, gdy tylko może stwierdzić, że jesteś nieaktualny - demony ntp zwykle poprawiają dryfowanie delikatnie. Ma to tę zaletę, że twoje logi są przy zdrowych zmysłach - na przykład na zajętym serwerze internetowym możesz sobie wyobrazić, że jeśli RTC dryfowałby przez kilka minut, to czytanie dzienników internetowych następnego dnia może wywnioskować, że ludzie byli w stanie trafić bezpiecznie Adresy URL przed zalogowaniem, ponieważ działania w sieci byłyby nieczynne.

Kyle Hodgson
źródło
1

ntpdate jest przeznaczony do jednorazowych aktualizacji, jeśli chcesz regularnie synchronizować czas, skorzystaj z usługi w tym celu, ntpd.

O ile mi wiadomo, nie ma ważnego powodu, aby nie używać ntpd

Rog
źródło
0

Nie musisz używać crontab, po to jest ntpd.

Początkowo, gdy czas się kończy, jednym ze sposobów jest po prostu zatrzymać ntpd, następnie uruchomić, ntpdate ntp.server.comaby przywrócić go do synchronizacji, a następnie ponownie uruchomić ntp.

Jeśli jednak masz dużą sieć, prawdopodobnie skonfiguruję kilka lokalnych serwerów NTTP i zachęcę wszystkie hosty do korzystania z nich.

Kserkses
źródło
0

Zobacz tę dyskusję, aby dowiedzieć się, dlaczego „ntpdate” jest nadal pożądany i używany.

Podsumowując: ntpd jest powolny w porównaniu przy dokonywaniu ogromnej korekty czasu, nawet z opcją -g.

James
źródło
-3

Do użytku domowego, ntpdate nie jest tak naprawdę biggie .. Jest powód, dla którego jest „wolniejszy”. Każdy, kto używa crona z ntpdate w środowisku PRODUKCJI PRZEDSIĘBIORSTWA, jest po prostu idiotą.

StateGov1
źródło
2
Istnieją zastosowania. Na przykład serwer z potrzebą posiadania minimalnych otwartych portów dowolnego rodzaju i wymaganiem rozdzielczości około +/- 1000 ms, cron + ntpdate jest doskonale poprawnym sposobem na utrzymanie synchronizacji czasu.
sysadmin1138