chronyd 소개와 설치 가이드

chronyd 설치와 운영 가이드입니다. chrony.conf, iburst, makestep, rtcsync, chronyc tracking/sources, NTP 서버 모드, UDP 123 방화벽과 문제 해결을 정리했습니다.

chronyd는 chrony 프로젝트의 시간 동기화 데몬입니다. 기존 ntpd보다 네트워크가 불안정하거나 VM처럼 시간이 튀는 환경에서 빠르게 수렴하도록 많이 사용됩니다. 리눅스 서버, 가상화 호스트, DB 서버, 로그 수집 서버에서는 시간 오차가 장애 분석과 인증에 직접 영향을 주므로 반드시 점검해야 합니다.

설치

# Ubuntu/Debian
sudo apt update
sudo apt install -y chrony

# RHEL/Rocky/Alma
sudo dnf install -y chrony

서비스명은 배포판에 따라 chrony 또는 chronyd로 보일 수 있습니다.

systemctl status chrony --no-pager 2>/dev/null || systemctl status chronyd --no-pager

기본 설정

Ubuntu 계열은 보통 /etc/chrony/chrony.conf, RHEL 계열은 /etc/chrony.conf를 사용합니다. 서버 풀은 조직 표준 NTP나 지역 pool을 사용합니다.

# 예시
pool 2.pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync

iburst는 초기 동기화를 빠르게 하고, makestep 1.0 3은 시작 초기에 큰 시간 차이를 단계적으로 보정하지 않고 바로 맞출 수 있게 합니다. 운영 DB처럼 시간 점프에 민감한 서비스에서는 적용 시점을 고려해야 합니다.

서비스 시작

# Ubuntu/Debian
sudo systemctl enable --now chrony

# RHEL/Rocky/Alma
sudo systemctl enable --now chronyd

동기화 상태 확인

chronyc tracking
chronyc sources -v
chronyc sourcestats -v
timedatectl

chronyc sources -v에서 ^*로 표시된 source가 현재 선택된 시간 소스입니다. chronyc tracking에서는 offset, frequency, leap status를 확인합니다.

방화벽과 서버 모드

내부망 NTP 서버로 동작시키려면 client 허용 대역을 설정하고 UDP 123을 열어야 합니다.

# chrony.conf 예시
allow 192.168.10.0/24
local stratum 10
# firewalld
sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

# UFW
sudo ufw allow 123/udp

local stratum은 외부 시간 소스를 잃었을 때 내부 기준으로 계속 시간을 제공하기 위한 설정입니다. 정확한 외부 동기화가 필요한 환경에서는 의미를 이해하고 제한적으로 사용해야 합니다.

문제 해결

동기화가 되지 않으면 먼저 NTP 서버 접근과 로그를 확인합니다.

chronyc activity
chronyc sources -v
journalctl -u chrony -n 100 --no-pager 2>/dev/null || journalctl -u chronyd -n 100 --no-pager
nc -vzu pool.ntp.org 123

시간 차이가 너무 커서 수렴이 느릴 때는 일회성 보정이 필요할 수 있습니다.

sudo chronyc makestep
chronyc tracking

운영 기준

  • 모든 서버가 같은 내부 NTP 계층을 바라보게 합니다.
  • 가상화 호스트와 게스트의 시간 동기화 정책이 충돌하지 않게 합니다.
  • 인증서, Kerberos, DB replication, 로그 분석 서버는 시간 오차를 별도 알림으로 둡니다.
  • 장애 분석에서는 로그 시간대와 NTP offset을 함께 확인합니다.

문서 링크

BGM EVER