Chrony란?
Chrony(크로니)는 시간 동기화를 제공하는 프로그램으로, 리눅스 시스템에서 사용되는 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