Określ różnicę czasu między dwoma serwerami Linux

23

Rozwiązuję problem z opóźnieniem sieci w sieci. Prawdopodobnie jest to problem z okablowaniem, ale podczas gdy ja zastanawiałem się nad tym, patrzyłem na czasy pakietu ping opuszczającego kartę sieciową i docierającego do innego serwera. Zarówno linux.

Więc mam tcpdump działający na obu i wydaje ping z jednego na drugi iz powrotem, a spojrzenie na różnice czasowe mogło rzucić światło na to, skąd pochodzi opóźnienie.

To jest teraz ćwiczenie akademickie, ponieważ muszę wyeliminować niektóre bardziej podstawowe przyczyny, ale byłem ciekawy, jak można to osiągnąć. Biorąc pod uwagę, że ntpd jest zainstalowany i działa na dwóch serwerach, w jaki sposób mogę potwierdzić bieżącą rozbieżność czasu między dwoma serwerami, do dowolnego możliwego poziomu dokładności - biorąc pod uwagę, że mówimy o opóźnieniu w lokalnej sieci LAN, która jest idealnie milisekundą lub więc.

Sam NTP jest dokładny do kilku ms w dobrych warunkach, a ponieważ oba serwery są w tym samym środowisku, powinny (przypuszczalnie) osiągnąć podobny poziom dokładności, a zatem powinny mieć rozbieżność czasową między nimi wynoszącą zaledwie kilka ms - ale jak mogę to sprawdzić?

Paweł
źródło

Odpowiedzi:

14

Jeśli dwa serwery są równorzędne NTP, użyj

  ntpq -p

Które pokażą aktualne przesunięcia

Pamiętaj, że NTP bierze pod uwagę opóźnienie sieci. Jeśli znasz przesunięcie każdego serwera od wspólnego serwera NTP, jest to tak dokładne, jak to tylko możliwe przy użyciu standardowych narzędzi.


AKTUALIZACJA

Mam dwa serwery uniksowe korzystające z NTP. Zobaczmy, jaki czas spędzają:

$ sudo /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 hufu.ki.iif.hu  185.219.2.214    2 u   12   64    1   71.755   -0.073   0.001
 web.puflet.info 188.138.107.156  3 u   11   64    1   78.248    0.417   0.001
 84.2.44.19      10.20.75.140     2 u   10   64    1   74.721   -1.076   0.001

$ sudo /usr/sbin/ntpq -p otherbox
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp2.exa-networ 195.66.241.10    2 u  799 1024  377   43.405    7.796 218.471
+mantaray.netine 249.240.53.144   3 u  289 1024  377   34.782    8.484 212.631
*rilynn.me.uk    81.2.117.228     2 u  765 1024  377   45.665    6.804 142.023
+ntp.thirdlight. 193.67.79.202    2 u  791 1024  377   38.322    9.871 223.397

Używają różnych serwerów, ponieważ używają serwerów z puli NTTP.

Tymczasowo dodam otherbox do konfiguracji tego serwera, aby móc bezpośrednio zmierzyć przesunięcie czasowe

$ sudo vi /etc/ntp.conf
 (added `server otherbox`)

$ sudo /sbin/service ntpd restart

$ sudo /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 gamma.h3x.no    78.70.33.22      3 u    4   64    1   34.840   -0.964   0.001
 web.puflet.info 188.138.107.156  3 u    3   64    1   78.148   -1.243   0.001
 alpha.rueckgr.a 129.69.1.153     2 u    2   64    1   61.495   -2.362   0.001
 otherbox.exampl 60.155.73.34     3 u    1   64    1    0.604  -11.286   0.001

Wygląda na to, że znaczniki czasu na moich dwóch serwerach różnią się o około 11 ms.

RedGrittyBrick
źródło
Nie są, niezależnie czerpią czas z serwerów NTTP
Paul
@Paul: Zobacz aktualizację
RedGrittyBrick
Po dodaniu lokalnego serwera NTP do /etc/ntp.confklienta zakładam, że zrobiłeś to jako taki server 192.168.1.70 iburst. Ponadto, czy usunąłeś wszystkie inne serwery z listy klientów?
puk
33

ntpdate -q robi co chcesz.

Przykład:

root@host1:~# ntpdate -q host2 
server host2, stratum 4, offset 109.584520, delay 0.77560
17 Apr 21:48:16 ntpdate[28849]: no server suitable for synchronization found

W takim przypadku serwery mają różnicę około 110 sekund.

Alexander Garden
źródło
To działa tak, ale potrzebuję jakiegoś sposobu na uzyskanie szybszej odpowiedzi, aby móc dodać przesunięcie do skryptu gromadzącego dane.
SJG,
8

Możesz również wykonać następujące czynności na hoście 1:

root@host1# clockdiff -o host2
Graeme Moss
źródło