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, Системное администрирование