Как настроить синхронизацию времени в Ubuntu 18.04

Вступление

Точное хронометраж стал важнейшим компонентом современного развертывания программного обеспечения. Будь то проверка того, что журналы записаны в правильном порядке, или обновления базы данных применены правильно, несинхронное время может привести к ошибкам, повреждению данных и другим трудным для отладки проблемам.

Ubuntu 18.04 имеет синхронизацию времени, встроенную и активированную по умолчанию с помощью службы timesyncd systemd. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, проверим, активен ли timesyncd, и узнаем, как установить альтернативную сетевую службу времени.

Предпосылки

Перед началом этого руководства вам понадобится сервер Ubuntu 18.04 с пользователем без полномочий root и с поддержкой sudo, как описано вthis Ubuntu 18.04 server setup tutorial.

Навигация по основным командам времени

Самая простая команда для определения времени на вашем сервере -date. Любой пользователь может набрать эту команду, чтобы распечатать дату и время:

date
OutputTue Jul 10 14:48:52 UTC 2018

Чаще всего ваш сервер по умолчанию будет использовать часовой поясUTC, как показано в приведенных выше выходных данных. UTC - этоCoordinated Universal Time, время на нулевой долготе. Последовательное использование Universal Time уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.

Если у вас другие требования и вам нужно изменить часовой пояс, вы можете использовать для этого командуtimedatectl.

Сначала перечислите доступные часовые пояса:

timedatectl list-timezones

Список часовых поясов будет распечатан на вашем экране. Вы можете нажатьSPACE для перехода на страницу вниз иb для перехода на страницу вверх. Как только вы найдете правильный часовой пояс, запишите его и введитеq, чтобы выйти из списка.

Теперь установите часовой пояс с помощьюtimedatectl set-timezone, не забудьте заменить выделенную часть ниже на часовой пояс, который вы нашли в списке. Вам нужно будет использоватьsudo сtimedatectl, чтобы внести это изменение:

sudo timedatectl set-timezone America/New_York

Вы можете проверить свои изменения, снова запустивdate:

date
OutputTue Jul 10 10:50:53 EDT 2018

Аббревиатура часового пояса должна отражать вновь выбранное значение.

Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте удостоверимся, что наше время синхронизировано должным образом.

Управление timeyncd с помощью timedatectl

До недавнего времени большая часть синхронизации времени в сети выполняласьNetwork Time Protocol daemon или ntpd. Эта служба подключается к пулу других серверов NTP, которые предоставляют ей постоянные и точные обновления времени.

Стандартная установка Ubuntu теперь использует timesyncd вместо ntpd. Timesyncd подключается к тем же серверам времени и работает примерно так же, но он более легкий и более интегрированный с systemd и низкоуровневыми системами Ubuntu.

Мы можем запросить статус timesyncd, запустивtimedatectl без аргументов. В этом случае вам не нужно использоватьsudo:

timedatectl
Output                      Local time: Tue 2018-07-10 10:54:12 EDT
                  Universal time: Tue 2018-07-10 14:54:12 UTC
                        RTC time: Tue 2018-07-10 14:54:12
                       Time zone: America/New_York (EDT, -0400)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

При этом выводится местное время, универсальное время (которое может совпадать с местным временем, если вы не переключались из часового пояса UTC), а также некоторая информация о состоянии сетевого времени. System clock synchronized: yes указывает, что время успешно синхронизировано, аsystemd-timesyncd.service active: yes означает, что timesyncd включен и работает.

Если timesyncd не активен, включите его с помощью timedatectl:

sudo timedatectl set-ntp on

Снова запуститеtimedatectl, чтобы подтвердить статус сетевого времени. Фактическая синхронизация может занять минуту, но в конечном итоге иNetwork time on:, иNTP synchronized: должны прочитатьyes.

Переключение на ntpd

Хотя timesyncd подходит для большинства целей, некоторые приложения, которые очень чувствительны к малейшим возмущениям во времени, могут лучше обслуживаться ntpd, поскольку он использует более сложные методы для постоянного и постепенного поддержания системного времени в нужном направлении.

Перед установкой ntpd мы должны отключить timesyncd:

sudo timedatectl set-ntp no

Убедитесь, что timesyncd выключен:

timedatectl

Найдите в выходных данныхsystemd-timesyncd.service active: no. Это означает, чтоtimesyncd был остановлен. Теперь мы можем установить пакетntp с помощьюapt:

sudo apt update
sudo apt install ntp

ntpd будет запущен автоматически после установки. Вы можете запросить у ntpd информацию о состоянии, чтобы убедиться, что все работает:

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
+ec2-52-0-56-137 216.239.35.0     2 u   16   64    1    7.872   -2.137   1.485
+66.220.10.2     129.6.15.30      2 u   12   64    1   65.204    3.740   2.686
+block.steinhoff 209.51.161.238   2 u   11   64    1   33.364    1.710   3.586
+eterna.binary.n 216.229.0.50     3 u   11   64    1   35.330    2.821   2.839
+2604:a880:800:1 209.51.161.238   2 u   14   64    1    0.394    0.386   2.462
+ec2-52-6-160-3. 130.207.244.240  2 u   11   64    1    8.150    2.050   3.053
+mx.danb.email   127.67.113.92    2 u   13   64    1   63.868    1.539   2.240
*hydrogen.consta 129.6.15.28      2 u   12   64    1    2.989    1.755   2.563
+ntp-3.jonlight. 127.67.113.92    2 u   10   64    1   64.561    2.122   3.593
+undef.us        45.33.84.208     3 u   12   64    1   33.508    1.631   3.647
+ntp-3.jonlight. 127.67.113.92    2 u    8   64    1   64.253    2.645   3.174
 2001:67c:1560:8 145.238.203.14   2 u   22   64    1   71.155   -1.059   0.000
+test.diarizer.c 216.239.35.4     2 u   11   64    1   64.378    4.648   3.244
 2001:67c:1560:8 145.238.203.14   2 u   18   64    1   70.744   -0.964   0.000
 alphyn.canonica 132.246.11.231   2 u   17   64    1    7.973   -0.170   0.000
+vps5.ctyme.com  216.218.254.202  2 u   10   64    1   65.874    1.902   2.608

ntpq - это инструмент запросов для ntpd. Флаг-p запрашивает информацию о серверах NTP (илиpeers), к которым подключился ntpd. Ваш вывод будет немного другим, но в нем должны быть перечислены серверы пула Ubuntu по умолчанию, а также несколько других. Имейте в виду, что ntpd может установить соединение в течение нескольких минут.

Заключение

В этой статье мы показали, как просматривать системное время, изменять часовые пояса, работать с установленным по умолчанию Ubuntu timesyncd и устанавливать ntpd. Если у вас более сложные потребности в хронометрировании, чем то, что мы рассмотрели здесь, вы можете сослаться наthe offical NTP documentation, а также взглянуть наthe NTP Pool Project, глобальную группу добровольцев, обеспечивающую большую часть мировой инфраструктуры NTP.

Related