Как настроить синхронизацию времени в Ubuntu 16.04
Введение
Точный хронометраж стал важнейшим компонентом современного развертывания программного обеспечения. Будь то обеспечение записи журналов в правильном порядке или правильное применение обновлений базы данных, рассинхронизация времени может привести к ошибкам, повреждению данных и другим трудным для отладки проблемам.
Ubuntu 16.04 имеет встроенную синхронизацию времени, которая активируется по умолчанию с помощью службы systemd timesyncd. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, убедимся, что timesyncd активен, и узнаем, как установить альтернативную сетевую службу времени.
Предпосылки
Прежде чем приступить к этому руководству, вам понадобится сервер Ubuntu 16.04 с пользователем без полномочий root и с поддержкой sudo, как описано в этом руководстве по настройке сервера Ubuntu 16.04.
Навигация по основным командам времени
Самая основная команда для определения времени на вашем сервере — date
. Любой пользователь может ввести эту команду, чтобы распечатать дату и время:
- date
OutputWed Apr 26 17:44:38 UTC 2017
Чаще всего ваш сервер по умолчанию использует часовой пояс UTC, как показано в приведенном выше выводе. UTC — это Всемирное скоординированное время, время на нулевой долготе. Последовательное использование универсального времени уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.
Если у вас другие требования и вам нужно изменить часовой пояс, вы можете использовать для этого команду timedatectl
.
Сначала перечислите доступные часовые пояса:
- timedatectl list-timezones
Список часовых поясов будет напечатан на вашем экране. Вы можете нажать ПРОБЕЛ
, чтобы перейти на страницу вниз, и b
, чтобы перейти на страницу вверх. Как только вы найдете правильный часовой пояс, запишите его, затем введите q
, чтобы выйти из списка.
Теперь установите часовой пояс с помощью timedatectl set-timezone
, убедившись, что выделенная часть ниже заменена часовым поясом, который вы нашли в списке. Вам нужно будет использовать sudo
с timedatectl
, чтобы внести это изменение:
- sudo timedatectl set-timezone America/New_York
Вы можете проверить свои изменения, снова запустив date
:
- date
OutputWed Apr 26 13:55:45 EDT 2017
Аббревиатура часового пояса должна отражать вновь выбранное значение.
Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте удостоверимся, что наше время синхронизируется правильно.
Управление timesyncd с помощью timedatectl
До недавнего времени большая часть синхронизации сетевого времени выполнялась с помощью демона протокола сетевого времени или ntpd. Этот сервер подключается к пулу других NTP-серверов, которые предоставляют ему постоянные и точные обновления времени.
Установка Ubuntu по умолчанию теперь использует timesyncd вместо ntpd. timesyncd подключается к тем же серверам времени и работает примерно так же, но более легковесен и лучше интегрирован с systemd и низкоуровневой работой Ubuntu.
Мы можем запросить статус timesyncd, запустив timedatectl
без аргументов. В этом случае вам не нужно использовать sudo
:
- timedatectl
OutputLocal 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
Это распечатывает местное время, универсальное время (которое может совпадать с местным временем, если вы не переключились с часового пояса UTC) и некоторую информацию о состоянии сетевого времени. Сетевое время включено: да
означает, что timesyncd включен, а Синхронизация NTP: да
означает, что время успешно синхронизировано.
Если timesyncd не включен, включите его с помощью timedatectl:
- sudo timedatectl set-ntp on
Запустите timedatectl
еще раз, чтобы подтвердить состояние сетевого времени. Фактическая синхронизация может занять минуту, но в конечном итоге как Сетевое время включено:
, так и Синхронизация NTP:
должны читаться как yes
.
Переключение на нтпд
Хотя timesyncd подходит для большинства целей, некоторые приложения, очень чувствительные даже к малейшим отклонениям во времени, могут лучше обслуживаться с помощью ntpd, поскольку он использует более сложные методы для постоянного и постепенного отслеживания системного времени.
Перед установкой ntpd мы должны отключить timesyncd:
- sudo timedatectl set-ntp no
Убедитесь, что timesyncd выключен:
- timedatectl
Найдите в выходных данных Время работы сети: нет
. Это означает, что timesyncd
был остановлен. Теперь мы можем установить пакет ntp
с помощью apt-get
:
- sudo apt-get install ntp
ntpd запустится автоматически после установки. Вы можете запросить у ntpd информацию о состоянии, чтобы убедиться, что все работает:
- sudo ntpq -p
Outputremote 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
— это инструмент запросов для ntpd. Флаг -p
запрашивает информацию о NTP-серверах (или одноранговых узлах), к которым подключен ntpd. Ваш вывод будет немного отличаться, но вы должны указать серверы пула Ubuntu по умолчанию, а также несколько других. Имейте в виду, что для установки соединения ntpd может потребоваться несколько минут.
Заключение
В этой статье мы показали, как просматривать системное время, изменять часовые пояса, работать с timesyncd по умолчанию в Ubuntu и устанавливать ntpd. Если у вас есть более сложные потребности в хронометраже, чем то, что мы рассмотрели здесь, вы можете обратиться к проекту NTP Pool Project, глобальной группе добровольцев, обеспечивающей большую часть мировой инфраструктуры NTP.