Вступление
Точное хронометраж стал важнейшим компонентом современного развертывания программного обеспечения. Будь то проверка того, что журналы записаны в правильном порядке, или обновления баз применяются правильно, несинхронное время может привести к ошибкам, повреждению данных и другим сложным проблемам для отладки.
В Debian 10 синхронизация времени встроена и активирована по умолчанию с использованием стандартного сервера времени ntpd, предоставляемого пакетом + ntp +
. В этой статье мы рассмотрим некоторые основные команды, связанные со временем, проверим, что ntpd активен и подключен к одноранговым узлам, и узнаем, как активировать альтернативную службу сетевого времени systemd-timesyncd.
Предпосылки
Перед началом этого урока вам понадобится сервер Debian 10 с пользователем без полномочий root, включенным + sudo +
, как описано в https://www.digitalocean.com/community/tutorials/initial-server-setup-with -debian-10 [это руководство по настройке сервера Debian 10].
Шаг 1 - Навигация по основным временным командам
Самая простая команда для определения времени на вашем сервере - + date +
. Любой пользователь может набрать эту команду, чтобы распечатать дату и время:
date
OutputWed 31 Jul 2019 06:03:19 PM
Чаще всего ваш сервер по умолчанию использует часовой пояс UTC, как показано в приведенном выше выводе. UTC - Всемирное координированное время, время на нулевой долготе. Последовательное использование Universal Time уменьшает путаницу, когда ваша инфраструктура охватывает несколько часовых поясов.
Если у вас другие требования и вам нужно изменить часовой пояс, вы можете использовать команду + timedatectl
.
Сначала перечислите доступные часовые пояса:
timedatectl list-timezones
Список часовых поясов будет распечатан на вашем экране. Вы можете нажать + SPACE
для перехода вниз, а` + b + для перехода вверх. Как только вы найдете правильный часовой пояс, запишите его, затем наберите `+ q +
, чтобы выйти из списка.
Теперь установите часовой пояс с помощью + timedatectl set-timezone +
, обязательно заменив выделенную часть ниже на часовой пояс, который вы нашли в списке. Вам нужно использовать + sudo +
с + timedatectl +
, чтобы сделать это изменение:
sudo timedatectl set-timezone
Вы можете проверить свои изменения, снова запустив + date +
:
date
OutputWed 31 Jul 2019 02:08:43 PM
Аббревиатура часового пояса должна отражать вновь выбранное значение.
Теперь, когда мы знаем, как проверить часы и установить часовые пояса, давайте удостоверимся, что наше время синхронизировано должным образом.
Шаг 2 - Проверка статуса ntpd
По умолчанию Debian 10 запускает стандартный сервер ntpd, чтобы синхронизировать системное время с пулом внешних серверов времени. Мы можем проверить, что он работает с командой + systemctl +
:
sudo systemctl status ntp
Output● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: since Wed 2019-07-31 13:57:08 EDT; 17min ago
Docs: man:ntpd(8)
Main PID: 429 (ntpd)
Tasks: 2 (limit: 1168)
Memory: 2.1M
CGroup: /system.slice/ntp.service
└─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .
Состояние + active (running) +
указывает на то, что ntpd запущен правильно. Чтобы получить больше информации о состоянии ntpd, мы можем использовать команду + ntpq +
:
ntpq -p
Output remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
+208.67.72.50 152.2.133.55 2 u 12 64 377 39.381 1.696 0.674
+198.46.223.227 204.9.54.119 2 u 6 64 377 22.671 3.536 1.818
-zinc.frizzen.ne 108.61.56.35 3 u 43 64 377 12.012 1.268 2.553
-pyramid.latt.ne 204.123.2.72 2 u 11 64 377 69.922 2.858 0.604
+nu.binary.net 128.252.19.1 2 u 10 64 377 35.362 3.148 0.587
#107.155.79.108 129.7.1.66 2 u 65 64 377 42.380 1.638 1.014
+t1.time.bf1.yah 98.139.133.62 2 u 6 64 377 11.233 3.305 1.118
*sombrero.spider 129.6.15.30 2 u 47 64 377 1.304 2.941 0.889
+hydrogen.consta 209.51.161.238 2 u 45 64 377 1.830 2.280 1.026
-4.53.160.75 142.66.101.13 2 u 42 64 377 29.077 2.997 0.789
#horp-bsd01.horp 146.186.222.14 2 u 39 64 377 16.165 4.189 0.717
-ntpool1.603.new 204.9.54.119 2 u 46 64 377 27.914 3.717 0.939
+ ntpq +
- инструмент запросов для ntpd. Флаг + -p +
запрашивает информацию о серверах NTP (или p eers), к которым подключен ntpd. Ваш вывод будет немного другим, но в нем должны быть перечислены серверы пула Debian по умолчанию, а также несколько других. Имейте в виду, что ntpd может установить соединение в течение нескольких минут.
Шаг 3 - Переключение на systemd-timesyncd
Для замены ntpd можно использовать встроенный в systemd компонент * timesyncd *. Timesyncd - это более легкая альтернатива ntpd, более интегрированная с systemd. Однако обратите внимание, что он не поддерживает работу в качестве сервера времени, и он немного менее изощрен в методах, которые он использует для синхронизации вашего системного времени. Если вы используете сложные распределенные системы реального времени, вы можете придерживаться ntpd.
Чтобы использовать timesyncd, мы должны сначала удалить ntpd:
sudo apt purge ntp
Затем запустите службу Timesyncd:
sudo systemctl start systemd-timesyncd
Наконец, проверьте состояние службы, чтобы убедиться, что она работает:
sudo systemctl status systemd-timesyncd
Output● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: since Wed 2019-07-31 14:21:37 EDT; 6s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 1168)
Memory: 1.3M
CGroup: /system.slice/systemd-timesyncd.service
└─1681 /lib/systemd/systemd-timesyncd
Мы можем использовать + timedatectl +
, чтобы распечатать текущее понимание systemd времени:
timedatectl
Output Local time: Wed 2019-07-31 14:22:15 EDT
Universal time: Wed 2019-07-31 18:22:15 UTC
RTC time: n/a
Time zone: America/New_York (EDT, -0400)
RTC in local TZ: no
При этом выводится местное время, универсальное время (которое может совпадать с местным временем, если вы не переключались из часового пояса UTC), а также некоторая информация о состоянии сетевого времени. + Системные часы синхронизированы: да +
означает, что время было успешно синхронизировано, а + NTP service: active +
означает, что timesyncd включен и работает.
Заключение
В этой статье мы показали, как просматривать системное время, изменять часовые пояса, работать с ntpd и переключаться на службу systemd timesyncd. Если у вас есть более сложные потребности в хронометраже, чем те, которые мы рассмотрели здесь, вы можете обратиться к ical официальной документации NTP, а также взгляните на The NTP Pool Project, глобальную группу добровольцев, предоставляющих большую часть мировой инфраструктуры NTP.