안녕하세요. VISION IDC 기술팀입니다.
CentOS 7 서버의 시간이 실제 시간과 어긋나면 로그 분석, 인증서 검증, 데이터베이스 기록, 예약 작업처럼 시간에 의존하는 기능에서 문제가 발생할 수 있습니다. 이 문서에서는 CentOS 7에서 chrony를 사용해 NTP 서버와 시스템 시간을 동기화하는 방법을 설명합니다.
chrony는 chronyd 데몬과 상태 확인·제어에 사용하는 chronyc 명령으로 구성됩니다. 설치 여부 확인부터 NTP 소스 설정, 부팅 시 자동 시작, 즉시 시간 보정, 동기화 상태 확인과 오류 점검까지 순서대로 진행하겠습니다.
적용 환경
- 운영체제: CentOS Linux 7
- 시간 동기화 도구: chrony
- 서비스명:
chronyd - 설정 파일:
/etc/chrony.conf - 관리 명령:
chronyc
1. 설정 전 상태 확인
먼저 운영체제 버전과 현재 시스템 시간을 확인합니다.
cat /etc/centos-release
date
timedatectl status
chrony 패키지가 이미 설치되어 있는지도 확인합니다.
rpm -q chrony
설치되어 있다면 패키지명과 버전이 출력됩니다. 설치되어 있지 않으면 패키지를 찾을 수 없다는 메시지가 표시됩니다.
기존에 ntpd를 사용하고 있는 서버라면 두 시간 동기화 데몬을 동시에 운영하지 않도록 현재 상태를 먼저 확인합니다.
systemctl status chronyd
systemctl status ntpd
2. chrony 설치
chrony가 설치되어 있지 않다면 다음 명령으로 설치합니다.
sudo yum install -y chrony
설치 후 실행 파일과 패키지 상태를 확인할 수 있습니다.
rpm -q chrony
which chronyd
which chronyc
3. NTP 서버 설정
chronyd의 기본 설정 파일은 /etc/chrony.conf입니다. 변경 전 원본 파일을 백업합니다.
sudo cp -a /etc/chrony.conf /root/chrony.conf.backup
현재 설정된 시간 서버를 확인합니다.
grep -E '^[[:space:]]*(server|pool)[[:space:]]' /etc/chrony.conf
이미 정상적인 NTP 서버가 설정되어 있다면 반드시 변경할 필요는 없습니다. 사내 NTP 서버나 별도로 지정한 시간 서버를 사용해야 하는 경우에만 설정 파일을 수정합니다.
sudo vi /etc/chrony.conf
예를 들어 다음과 같이 NTP 서버를 지정할 수 있습니다. server.example.com은 문서용 예시 주소이므로 실제 사용 가능한 NTP 서버 주소로 변경해야 합니다.
server server.example.com iburst
iburst 옵션은 초기 동기화 시 여러 요청을 빠르게 보내 시간 소스를 더 빠르게 평가하는 데 사용됩니다. 기존 driftfile, makestep 등 다른 설정은 특별한 이유가 없다면 임의로 삭제하지 않는 것이 좋습니다.
4. chronyd 시작 및 자동 실행 설정
chronyd를 시작하고 서버를 재부팅한 뒤에도 자동으로 실행되도록 설정합니다.
sudo systemctl start chronyd
sudo systemctl enable chronyd
설정 파일을 수정한 상태라면 서비스를 다시 시작하여 변경 내용을 적용합니다.
sudo systemctl restart chronyd
서비스 상태와 부팅 시 자동 시작 여부를 확인합니다.
systemctl status chronyd
systemctl is-enabled chronyd
chronyd가 실행 중이어야 하며, 자동 시작을 설정했다면 is-enabled 결과에서 enabled 상태를 확인할 수 있습니다.
5. 시간이 크게 틀어졌다면 즉시 동기화
chronyd는 일반적으로 시스템 시간을 갑자기 변경하기보다 점진적으로 보정합니다. 현재 시간이 크게 어긋나 즉시 맞춰야 하는 상황에서는 다음 명령을 사용할 수 있습니다.
sudo chronyc makestep
명령 실행 후 현재 시간을 다시 확인합니다.
date
6. 시간 동기화 상태 확인
chronyc tracking 확인
현재 동기화 상태와 기준 시간 서버, 오프셋 등을 확인합니다.
chronyc tracking
정상적으로 동기화된 환경에서는 Reference ID가 설정되고, Stratum과 오프셋 정보가 표시되며, 일반적으로 Leap status가 Normal 상태인지 확인할 수 있습니다.
사용 중인 시간 소스 확인
chronyc sources -v
소스 목록에서 ^* 표시는 현재 선택되어 동기화에 사용 중인 NTP 서버를 의미합니다. ^+는 선택 가능한 보조 소스이며, ^?가 계속 표시된다면 해당 시간 서버와 통신하지 못하거나 아직 측정값을 확보하지 못한 상태를 점검해야 합니다.
시간 소스 통계 확인
chronyc sourcestats -v
서버를 재부팅한 뒤에도 chronyd가 자동으로 실행되는지 확인하려면 재부팅 후 다음 명령을 다시 실행합니다.
systemctl is-active chronyd
systemctl is-enabled chronyd
chronyc tracking
7. 자주 발생하는 문제와 확인 방법
| 증상 | 가능한 원인 | 확인 방법 | 해결 방향 |
|---|---|---|---|
yum install chrony 실패 |
CentOS 7 기본 저장소 지원 종료 또는 저장소 설정 오류 | yum repolist 및 오류 메시지 확인 |
CentOS Vault 저장소 설정을 먼저 복구한 뒤 다시 설치합니다. |
chronyd가 시작되지 않음 |
설정 오류, 패키지 문제 또는 서비스 실행 실패 | systemctl status chronyd, journalctl -u chronyd |
로그에서 실패 원인을 확인하고 /etc/chrony.conf의 최근 변경 사항을 점검합니다. |
chronyc sources -v에서 모든 소스가 ^? |
NTP 서버 주소 오류, DNS 실패, 네트워크 또는 UDP 123 차단 | 설정된 서버 주소와 DNS 해석, 네트워크 경로 확인 | 정상적인 NTP 서버 주소를 지정하고 외부 방화벽의 아웃바운드 NTP 정책을 확인합니다. |
| 시스템 시간은 맞지만 표시되는 현지 시간이 다름 | 타임존 설정 문제 | timedatectl status |
NTP 설정이 아니라 시스템 타임존을 올바른 지역으로 변경합니다. |
| chrony와 ntpd가 모두 설치되어 있음 | 기존 NTP 구성과 chrony 구성이 혼재 | systemctl status chronyd, systemctl status ntpd |
사용할 시간 동기화 데몬을 하나로 정하고 기존 운영 정책을 확인한 뒤 불필요한 서비스를 중지합니다. |
chronyd 로그 확인
서비스가 시작되지 않거나 동기화가 반복해서 실패하면 systemd 저널에서 chronyd 로그를 확인합니다.
sudo journalctl -u chronyd -n 100 --no-pager
설정한 NTP 서버의 호스트명이 정상적으로 해석되는지도 확인할 수 있습니다. 아래 주소는 예시이므로 실제 설정한 서버 주소를 사용하십시오.
getent hosts server.example.com
8. 설정 원상복구
NTP 서버를 변경한 뒤 문제가 발생했다면 앞에서 만든 백업 파일로 /etc/chrony.conf를 복원하고 chronyd를 다시 시작합니다.
sudo cp -a /root/chrony.conf.backup /etc/chrony.conf
sudo systemctl restart chronyd
복원 후 동기화 소스와 상태를 다시 확인합니다.
chronyc sources -v
chronyc tracking
chrony 사용 자체를 중단해야 하는 경우에는 서비스를 중지하고 부팅 시 자동 시작을 해제할 수 있습니다.
sudo systemctl stop chronyd
sudo systemctl disable chronyd
9. 관련 VISION IDC 기술자료와 공식 참고자료
관련 VISION IDC 기술자료
- CentOS 7에서 yum 저장소 오류를 Vault 저장소로 변경하여 해결하는 방법 — 지원 종료 후 chrony 패키지 설치 과정에서 yum 저장소 오류가 발생할 때 참고할 수 있습니다.
- VISION IDC 기술자료 — CentOS 및 Linux 서버 운영 관련 문서를 확인할 수 있습니다.
공식 참고자료
| 기관 | 문서 | 확인 내용 | 조회일 |
|---|---|---|---|
| Red Hat | RHEL 7 System Administrator's Guide - Configuring NTP Using the chrony Suite | chrony 설치, chronyd 서비스, /etc/chrony.conf, chronyc tracking, sources, makestep |
|
| CentOS Project | CentOS Linux | CentOS Linux 7 지원 종료일 2024년 6월 30일 확인 |
10. 자주 묻는 질문
chronyd가 실행 중이면 시간이 바로 맞아야 하나요?
반드시 즉시 동일해지는 것은 아닙니다. chronyd는 일반적으로 시스템 시간을 점진적으로 보정합니다. 현재 시간 차이가 크고 즉시 조정이 필요한 경우 영향 범위를 확인한 뒤 chronyc makestep을 사용할 수 있습니다.
chrony 동기화가 정상인지 가장 빠르게 확인하는 명령은 무엇인가요?
chronyc tracking으로 전체 동기화 상태를 확인하고, chronyc sources -v에서 현재 선택된 NTP 소스가 ^*로 표시되는지 함께 확인하는 방법이 유용합니다.
NTP 클라이언트 서버에도 firewalld에서 123/UDP를 열어야 하나요?
다른 서버의 NTP 요청을 받는 서버가 아니라 외부 NTP 서버에 시간을 질의하는 클라이언트 용도라면 일반적으로 인바운드 NTP 서비스를 별도로 공개할 필요가 없습니다. 다만 외부 방화벽이나 네트워크 정책에서 아웃바운드 UDP 123 통신이 차단되어 있지 않은지 확인해야 합니다.
시간은 맞는데 한국 시간이 아닌 다른 시간으로 표시됩니다.
NTP 동기화와 타임존은 별개의 설정입니다. timedatectl status로 현재 타임존을 확인하고 운영 환경에 맞는 타임존을 설정하십시오.
마무리
이번 문서에서는 CentOS 7에서 chrony를 설치하고 chronyd를 활성화한 뒤 NTP 서버와 시간을 동기화하는 방법을 살펴봤습니다. 설정 후에는 단순히 date 결과만 확인하지 말고 chronyc tracking과 chronyc sources -v를 사용해 실제 동기화 상태를 확인하는 것이 중요합니다.
CentOS 7은 이미 지원이 종료된 운영체제이므로 시간 동기화 설정을 정상화한 뒤에도 보안 업데이트가 가능한 지원 중 운영체제로의 이전 계획을 함께 검토하시기 바랍니다.
