У одного из наших заказчиков несколько linux серверов работают под управлением Ubuntu, появилась необходимость выполнить настроку синхронизации времени на данных машинах. В системах с systemd по-умолчанию используется systemd-timesyncd - отдельная служба, отвечающая за синхронизацию времени локальной системы по протоколу NTP с внешнеми NTP серверами. Самое приятное, что systemd-timesyncd являеться частью systemd и не требует установки.
Systemd-timesyncd не будет одновременно работать с ntpd или chronyd (не будет выполняться синхронизация времени). Данную проверка выполняется в конфигурационном файле /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf
, где прописан список бинарников, при наличии которых в системе демон systemd-timesyncd не будет работать. Перед началом работ проверьте установлен ли у вас в системе ntpd или chronyd и при наличии удалите их.
В данном случае сервера выступают только в роли клиента, необходимости в ntp сервере предоставляющего точное время для других серверов нет. С данной задачей прекрасно справляется systemd-timesyncd исходя из этого необходимость в ntpd отсутствует.
Для настройки systemd-timesyncd необходимо изменить файл конфигурации etc/systemd/timesyncd.conf
.
@nano /etc/systemd/timesyncd.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.
[Time]
#NTP=
#FallbackNTP=ntp.ubuntu.com
NTP=
Строка NTP= определяет список основных серверов времени, впишите туда свой сервер времени. Можно раскоментировать настройку FallbackNTP= она определяеи список резервных серверов времени
Выполняем перезапуск службу systemd-timesyncd:
#systemctl restart systemd-timesyncd.service
Проверяем статус работы
#systemctl status systemd-timesyncd.service
Результат:
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendo
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Wed 2021-01-13 19:49:41 MSK; 21h ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 25757 (systemd-timesyn)
Status: "Synchronized to time server 91.207.136.50:123 (0.pool.ntp.org
Tasks: 2
Memory: 264.0K
CPU: 81ms
CGroup: /system.slice/systemd-timesyncd.service
└─25757 /lib/systemd/systemd-timesyncd
Jan 13 19:49:41 web1 systemd[1]: Stopping Network Time Synchronization
Jan 13 19:49:41 web1 systemd[1]: Stopped Network Time Synchronization.
Jan 13 19:49:41 web1 systemd[1]: Starting Network Time Synchronization
Jan 13 19:49:41 web1 systemd[1]: Started Network Time Synchronization.
Jan 13 19:49:41 web1 systemd-timesyncd[25757]: Synchronized to time se
lines 1-19/19 (END)...skipping...
Проверяем состояние синхронизации:
#timedatectl
Результат:
Local time: Thu 2021-01-14 17:04:41 MSK
Universal time: Thu 2021-01-14 14:04:41 UTC
RTC time: Thu 2021-01-14 14:04:41
Time zone: Europe/Moscow (MSK, +0300)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
PS: Если systemd-timesyncd не синхронизирует часы, то прежде всего проверьте настройки межсетевого экрана (iptables) на предмет разрешения исходящих подключений на 123 порт по протоколу UDP
Если же всё таки возникает необходимость использования других пакетов синхронизации времени, исполняемые файлы которых отличны от тех, что перечислены в disable-with-time-daemon.conf
, то можно самостоятельно остановить и отключить службу systemd-timesyncd парой простых команд:
# systemctl stop systemd-timesyncd
# systemctl disable systemd-timesyncd