Chrony란?

Chrony(크로니)는 시간 동기화를 제공하는 프로그램으로, 리눅스 시스템에서 사용되는 NTP(Network Time Protocol)의 대안 중 하나이며,  네트워크의 지연이나 불안정성이 높은 환경에서 더 빠른 동기화를 제공하며, 부팅 후 시간을 빠르게 동기화하는 데 강점을 갖고 있습니다.

 

NTP(Network Time Protocol) 서버 구축

 

Chrony와 NTP 차이점

항목 NTP Chrony
알고리즘 및 동작 방식 Symmetric Active-Passive 방식을 사용, 계층 구조 형성 평균치 대신 안정된 샘플 사용, 계층 구조 없이 빠른 동기화
시동 시 동작 초기 동기화 시간이 다소 길 수 있음 초기 동기화 시간이 더 짧음, 부팅 시 빠른 동기화
동적 서버 설정 설정 파일 수정 시 서버 재시작 필요 동적으로 서버 추가/삭제 가능, 변경 사항 즉시 적용
시계 드리프트 관리 주기적으로 드리프트 계산하여 정확도 유지 드리프트 값을 즉시 업데이트, 정확한 동기화 제공
네트워크 트래픽 및 리소스 사용 정기적인 풀링을 통한 동기화, 추가 트래픽 생성 필요할 때만 서버에게 요청, 효율적인 네트워크 및 리소스 사용
보안 별도의 설정이 필요함 초기부터 보안을 고려한 디자인

 

Chrony 서버 구축 스크립트

#!/bin/bash

# Chrony 설치
yum install -y chrony

# Chrony 설정 파일 수정
cat <<EOL > /etc/chrony.conf
# Chrony NTP 서버 구성 파일

# 예시 서버 (필요에 따라 변경 가능)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# Local 목록
allow 192.168.1.0/24

# 파일 경로
driftfile /var/lib/chrony/drift

# 끝
EOL

# Chrony 서비스 재시작
systemctl restart chronyd

# Chrony 서비스 활성화
systemctl enable chronyd

# 스크립트 종료 메시지
echo "Chrony NTP 서버가 구축되었습니다."

 

Chrony sources

아래는 chronyc sources를 사용했을 때 출력되는 예시입니다.

210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* time.bora.net 3 6 377 2 +2696us[+2696us] +/- 204ms
^- time.cesium.com 2 6 377 2 +2856us[+2856us] +/- 198ms
^+ time.cloudflare.com 2 6 377 2 +3590us[+3590us] +/- 170ms
^- time.windows.com 2 6 377 2 +1835us[+1835us] +/- 141ms
설명
MS (Mode Select) 동기화된 서버를 나타내는 표시. *는 현재 동기화된 서버를 나타냅니다.
Name/IP address 동기화된 서버의 이름 또는 IP 주소.
Stratum 서버의 계층 수준. 높은 계층일수록 정확도가 낮습니다.
Poll 서버에게 요청을 보내는 주기. 일반적으로 몇 분마다 한 번씩 서버에게 요청을 보냅니다.
Reach 최근의 성공적인 응답 횟수. 서버와의 통신이 잘 되고 있는지 확인하는 지표입니다.
LastRx 마지막으로 서버로부터 패킷을 수신한 시간.
Last sample 최근의 샘플링 결과와 오차 정보. 서버와 클라이언트 간의 시간 차이와 정확도를 나타냅니다.

 

Chrony 클라이언트 연동

# chrony 패키지 설치
yum install -y chrony

# chrony 설정파일 수정
vi /etc/chrony.conf

# /etc/chrony.conf 설정 파일 server 라인에 chrony 서버의 주소를 추가
server [your_chrony_server_ip]

# 서비스 재시작
systemctl restart chronyd
systemctl enable chronyd

# 동기화 확인
chronyc sources