HomeBlogGuestbookLab 

JDM's Blog

온갖 테스트 결과가 기록되는 이곳은 JDM's Blog입니다. :3

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초)까지 줄어듭니다. 이 주기값들에 대한 제어는 minpollmaxpoll 옵션으로 할 수 있습니다.

두가지의 poll 값을 사용하는 것을 보면 내부적으로 표준 시간과 서버 시간 차이값으로 동기화 주기를 조절하지 않을까 예상해봅니다. :3

TIP. poll value

ntpq -p를 통해 나오는 데이터 중 poll 값을 확인하면 현재 동기화 주기를 알 수 있습니다.

Closing Remarks

간단하게 NTP 서버 시간 동기화를 살펴봤습니다. :D