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

Вступление

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

В 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.

Related