25 maj

Konfiguracja synchronizacji czasu w Ubuntu 16.04

Konfiguracja synchronizacji czasuDokładny pomiar czasu stał jednym z najważniejszych elementów współczesnego wdrażania oprogramowania. Upewniając się że logi zapisane w odpowiedniej kolejności aktualizacji lub bazy danych są stosowane prawidłowo, bez synchronizacji czasu może to prowadzić do błędów, uszkodzenia danych i innych trudnych problemów diagnostycznych.

Wymagania

Przed rozpoczęciem pracy, należy zalogować się jako użytkownik inny niż root, z ustawionymi na serwerze uprawnieniami sudo. Możesz dowiedzieć się więcej o tym w naszym tutorialu Wstępna Konfiguracja serwera z Ubuntu 16.04.

Podstawowe polecenia

Podstawowym poleceniem do uzyskania czasu na serwerze jest date. Każdy użytkownik może wpisać to polecenie, aby wyświetlić datę i czas:

date

Output
Wed Apr 26 17:44:38 UTC 2017

Najczęściej serwer domyślnie jest w strefie czasowej UTC, jak podkreślono w  wyniku powyżej. UTC – uniwersalny czas geograficzny. Konsekwentnie stosowanie uniwersalnego czasu zmniejsza zamieszanie, gdy infrastruktura obejmuje wiele stref czasowych.

Jeśli masz inne wymagania, i trzeba zmienić strefę czasową, można użyć  polecenia timedatectl.

Lista dostępnych stref czasowych:

timedatectl list-timezones

Lista stref czasowych będzie wyświetlana na ekranie. Można nacisnąć klawisz spacji, aby przewinąć stronę w dół oraz klawisz b, aby przewinąć stronę w górę. Gdy znajdziesz odpowiednią strefę czasową, zanotuj to i naciśnij q, aby zamknąć listę.

Teraz ustaw strefę czasową z timedatectl set-timezone, upewniając się, że  zaznaczony fragment poniżej jest zastąpiony strefą czasową znalezioną na liście. Będziesz musiał użyć sudo z timedatectl, aby dokonać te zmiany:

sudo timedatectl set-timezone America/New_York

Można sprawdzić zmiany uruchamiając date ponownie:

date

Output
Wed Apr 26 13:55:45 EDT 2017

Skrót strefy czasowej powinien pokazywać nowo wybraną wartość.

Teraz, gdy wiemy  jak sprawdzić zegar i ustawić strefy czasowe, upewnijmy się, że nasz czas synchronizuje się poprawnie.

Kontrolowanie timesyncd z timedatectl

Do niedawna większość synchronizacji czasu sieciowego była obsługiwana przez Network Time Protocol daemon lub ntpd. Ten serwer jest podłączony do innych pool serwerów NTP, które zapewniają stałe i dokładne aktualizację czasowe.

Domyślna instalacja Ubuntu teraz używa timesyncd zamiast ntpd. Timesyncd podłącza się do tego samego serweru czasu  i działa mniej więcej tak samo, ale jest lżejszy i bardziej zintegrowany z systemd oraz mniejszy poziom pracy z Ubuntu.

Możemy sprawdzić stan timesyncd, uruchamiając timedatectl bez argumentów. Nie trzeba korzystać z sudo w tym przypadku:

timedatectl

Output
Local time: Wed 2017-04-26 17:20:07 UTC
  Universal time: Wed 2017-04-26 17:20:07 UTC
        RTC time: Wed 2017-04-26 17:20:07
       Time zone: Etc/UTC (UTC, +0000)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

To polecenie wyświetla czas lokalny, czas uniwersalny (który może być taki sam jak czas lokalny, jeśli nie przełączyć się ze strefy czasowej UTC), a także  niektóre informacje o stanie czasu sieciowego. Network time on: yes oznacza to, że timesyncd jest włączony oraz NTP synchronized: yes wskazuje, że czas został pomyślnie synchronizowany.

Jeśli timesyncd nie jest włączony, włącz go za pomocą timedatectl:

sudo timedatectl set-ntp on

Uruchom timedatectl ponownie w celu potwierdzenia statusu czasu sieciowego. Może to potrwać kilka minut dla rzeczywistej synchronizacji, ale w końcu Network time on: i NTP synchronized: powinien wyświetlić yes.

Przełączanie do ntpd

Chociaż timesyncd doskonale nadaje się do większości celów, niektóre aplikacje, które są bardzo wrażliwe nawet na najmniejsze zakłócenia w czasie, mogą być lepiej obsługiwane przez ntpd, on korzysta z bardziej zaawansowanych technik, aby stale i stopniowo zachować czas systemowy na torze.

Przed zainstalowaniem ntpd, powinniśmy wyłączyć timesyncd:

sudo timedatectl set-ntp no

Upewnij się, że timesyncd wyłączony:

timedatectl

Sprawdź Network time on: no w wyniku. Oznacza to, że timesyncd został zatrzymany. Teraz możemy zainstalować pakiet ntp z apt-get:

sudo apt-get install ntp

Ntpd zostanie uruchomiony automatycznie po instalacji. Można zażądać informację o stanie ntpd, aby sprawdzić czy wszystko działa:

sudo ntpq -p

Output
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
-makaki.miuku.ne 210.23.25.77     2 u   45   64    3  248.007   -0.489   1.137
-69.10.161.7     144.111.222.81   3 u   43   64    3   90.551    4.316   0.550
+static-ip-85-25 130.149.17.21    2 u   42   64    3   80.044   -2.829   0.900
+zepto.mcl.gg    192.53.103.108   2 u   40   64    3   83.331   -0.385   0.391

Ntpq jest narzędziem zapytania dla ntpd. Flaga -p żąda informacje na temat serwerów NTP, do których został podłączony ntpd. Jego wynik będzie nieco inny, ale muszą być wymienione standardowe pool serwery Ubuntu plus kilka innych. Należy pamiętać, że może potrwać kilka minut, aby nawiązać połączenie.

Wniosek

W tym artykule pokazaliśmy jak wyświetlić czas systemowy, zmienić strefę czasową, pracować z domyślnym timesyncd w Ubuntu oraz instalację ntpd. Jeśli masz bardziej zaawansowane potrzeby pomiaru czasu co omówiliśmy tutaj, można odwołać się do oficjalnej dokumentacji NTP, a także spojrzeć na NTP Pool Project.