Блог "Дети ОИТа"
/поиск

systemd-timesyncd vs chrony: выбор NTP-клиента для серверов Linux

Практическое сравнение systemd-timesyncd и chrony: когда и что выбирать, как развернуть, проверить и мониторить. С таблицей критериев, конфигами и чек-листом.

systemd-timesyncd vs chrony: выбор NTP-клиента для серверов Linux

Введение

Точное время — фундамент безопасности и согласованности распределённых систем: от TLS-рукопожатий и Kerberos до распределённых транзакций и логов. В Linux доступны два распространённых NTP-клиента: легковесный systemd-timesyncd и полнофункциональный chrony. Ниже — прикладной разбор, когда и что выбирать, как развернуть и проверить.

Критерии выбора

Критерий systemd-timesyncd chrony
Сценарий Типовые серверы/ВМ, облако DC, виртуализация, WAN, PTP-соседство
Точность Миллисекунды Субмиллисекунды, микросекунды
Источники NTP-серверы NTP + PPS, PHC, PTP
Режимы Клиент Клиент/сервер, orphan, hardware clocks
Failover Базовый Продвинутый (sources, falseticker)
Resource usage Минимальный Выше, но оправдан при требованиях
Интеграция systemd systemd, но автономно

Развёртывание

systemd-timesyncd

# Проверить статус
systemctl status systemd-timesyncd
# Включить и запустить
systemctl enable --now systemd-timesyncd
# Настроить серверы (единая точка управления)
mkdir -p /etc/systemd/timesyncd.conf.d
cat > /etc/systemd/timesyncd.conf.d/ntp.conf << 'EOF'
[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org
FallbackNTP=time.cloudflare.com
EOF
systemctl restart systemd-timesyncd
# Проверка
timedatectl status
systemctl status systemd-timesyncd --no-pager
journalctl -u systemd-timesyncd -n 50 --no-pager

chrony

apt-get update && apt-get install -y chrony   # Debian/Ubuntu
# или
yum install -y chrony                         # RHEL/CentOS

# /etc/chrony/chrony.conf — базовый профиль для серверов
cat > /etc/chrony/chrony.conf << 'EOF'
pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
rtcsync
makestep 0.1 3
maxupdateskew 100.0
local stratum 10 orphan
allow 10.0.0.0/8
EOF
systemctl enable --now chronyd
# Проверка
chronyc tracking
chronyc sources -v
chronyc ntpdata 0.pool.ntp.org

Валидация и мониторинг

  • systemd-timesyncd: timedatectl timesync-status; смотрите смещение и джиттер в journal.
  • chrony: chronyc tracking (Last offset, RMS offset, Skew), chronyc sources -v (состояние источников, falseticker).
  • Мониторинг: экспортируйте метрики chrony в Prometheus через chronyc ntpdata + exporter или используйте node_exporter текстовые файлы метрик; для timesyncd — journal + небольшой exporter.

Отказоустойчивость и безопасность

  • Используйте минимум 3–4 источника NTP из разных пулов; включите fallback.
  • chrony: настройте local orphan для автономной работы при потере сети; рассмотрите PPS/PHC при наличии оборудования.
  • firewall: исходящий UDP/123 разрешён; для chrony как сервера — входящий UDP/123 для доверенных подсетей.
  • Избегайте одиночных корпоративных серверов без резервирования — они становятся точкой отказа.

Миграция с timesyncd на chrony

systemctl disable --now systemd-timesyncd
apt-get install -y chrony
# Перенесите предпочитаемые серверы из /etc/systemd/timesyncd.conf.d/ в chrony.conf
systemctl enable --now chronyd
# Проверьте, что смещение быстро сходится (несколько минут)
watch -n 5 chronyc tracking

Чек-лист внедрения

  • Определены требования к точности (мс/мкс).
  • Выбран клиент (timesyncd или chrony).
  • Настроено ≥3 источников + fallback.
  • Включён мониторинг смещения/джиттера.
  • Проверен firewall для UDP/123.
  • Документирован runbook переключения.

Заключение

Для большинства ВМ и типовых сервисов достаточно systemd-timesyncd. Для контроллеров домена, кластеров и пограничных узлов с жёсткими требованиями — chrony с мониторингом и, при возможности, аппаратными источниками.

Теги

NTP, Linux, chrony, systemd, мониторинг, безопасность, автоматизация, best-practices

Категории

Администрирование Linux, Системное администрирование