CentOS 서버 시간 동기화(using ntp daemon)
이번 포스팅은 NTP(Network Time Protocol)의 간단한 정의와 CentOS에서의 사용법을 알아보고자 합니다.
NTP(Network Time Protocol)
Network Time Protocol (NTP) is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks
Wikipedia - Network Time Protocol
간단히 번역해본다면, NTP는 네트워크로 이뤄진 컴퓨터 시스템들 사이의 시간 동기화를 위한 네트워킹 프로토콜입니다.
When do I use NTP?
언제 NTP를 사용할까요?
제 서버에는 하루 단위 배치 프로그램이 있습니다. 그런데 어느 순간부터 미묘한 오차가 나더군요. 그래서 서버에서 date 커맨드로 실행해보니 대략 5분 정도의 시간 차이가 났습니다. (-_-;;)
그래서 서버 시간을 표준 시간과 동기화하기 위해 NTP를 사용하게 됩니다.
Install
CentOS에서 NTP를 제공하는 패키지로 ntp가 있습니다. ntp 데몬을 설치해서 시간 동기화를 해봅시다.
Install ntp daemon using yum
CentOS에서 ntp를 설치하기 위해 yum 패키지 관리자를 이용합니다.
$ yum install ntp
config & start ntp daemon
설치가 끝나면 ntp 데몬과 관련된 설정을 해줍니다. 기본 경로는 /etc/ntp.conf입니다. 이 파일을 vi 편집기등을 이용해 열어서 다음 부분을 수정해줍니다.
... # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # 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 server kr.pool.ntp.org ...
상기에 적혀있는 kr.pool.ntp.org의 자세한 사용법은 링크를 확인하세요. 안전하게 다른 곳을 더 추가할 수도 있습니다. 해당 부분은 검색 사이트에서 국내 타임 서버라고 검색해 봅시다.
그리고 다음으로 서버가 재부팅 되더라도 시간을 동기화 할 수 있도록 chkconfig를 해줍니다. 그리고 데몬을 구동시킵니다.
$ chkconfig ntpd on $ /etc/init.d/ntpd start
TIP. 주의사항!
NTP 데몬이 시작되고 나서 바로 동기화가 이뤄지지 않습니다. 여유있게 기다려주세요. (5분 이내)
또한, NTP 데몬은 UDP 123 포트를 이용합니다. 방화벽에서 막고 있다면 원활한 실행을 보장 할 수 없습니다!
Check Time Server
실제로 타임 서버에서 잘 받고 있는지 다음과 같은 커맨드로 확인합니다.
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *send.mx.cdnetwo ***.***.*.* 2 u 580 1024 377 1.104 12.566 14.660
위에 결과를 보시면 remote 부분에 있는 문자열이 있습니다. *send.mx.cdnetwo인데요, 이 문자열에서도 제일 앞 문자가 하나 있습니다. 이부분을 tally라고 하는데요. tally에 대한 언급이 있는 곳은 man ntpq 커맨드를 통해 확인 할 수 있습니다.
여기서 tally인 *가 뜻하는 것은 현재 동기화가 되어 있는 부분입니다. 만약 아무것도 없는 빈칸(blank)라면 접근할 수 없는 상태입니다. tally가 뜻하는 내용은 TroubleshootingNTP에서 자세한 내용을 확인 할 수 있습니다.
Sync Interval
그렇다면 ntp 데몬이 동기화하는 주기는 어느정도일까요? man ntp.conf를 통해서 확인해봅시다. 다음과 같은 도움말을 볼 수 있습니다.
... maxpoll maxpoll These options specify the minimum and maximum poll intervals for NTP messages, in seconds as a power of two. The maximum poll interval defaults to 10 (1024 s), but can be increased by the maxpoll option to an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s), but can be decreased by the minpoll option to a lower limit of 3 (8 s). ...
poll이라는 옵션으로 제공이 되어 있네요. NTP의 동기화 주기는 기본적으로 2^n초입니다. 최대값 poll에 의한 기본 주기는 2^10(1024초)이고 최대 2^17(36시간)까지 주기가 길어집니다. 반대로 최소값 poll에 의한 기본 주기는 2^6(64초)이고 최소 2^3(8초)까지 줄어듭니다. 이 주기값들에 대한 제어는 minpoll과 maxpoll 옵션으로 할 수 있습니다.
두가지의 poll 값을 사용하는 것을 보면 내부적으로 표준 시간과 서버 시간 차이값으로 동기화 주기를 조절하지 않을까 예상해봅니다. :3
TIP. poll value
ntpq -p를 통해 나오는 데이터 중 poll 값을 확인하면 현재 동기화 주기를 알 수 있습니다.
Closing Remarks
간단하게 NTP 서버 시간 동기화를 살펴봤습니다. :D