IT/AIX&Linux

NTP를 이용한 시간 동기화 -1 부-

뜻밖의 행복 2013. 2. 26. 18:04
반응형
 

안녕하세요?

뜻밖의 행운 입니다.

오늘은 시스템 운영간에 각 서버간의 시간을 동기화 시킬 필요가 있을 때 (특히 데이터 베이스 서버)

NTP 를 이용하여 시긴을 동기화 시키는 방법에 대해 다루어 보겠습니다.


시스템간의 시간을 동기화 시킬 수 있는 방법은 크게 3가지가 있습니다.

우선 가장 간단한 명령은 setclock 명령입니다.

# setclock hostname 을 통해 지정한 host의 time을 가져오는 명령어입니다. 

아래 그림에서 보듯이

date로 현재 시간을 확인해 볼 때 16:58 입니다.

setclock FSS(호스트명) 명령어를 사용하니

바로 FSS2의 시간을 가지고 오는 것을 확인 할 수 있습니다.


ntp

이 명령어의 특징은 지속적으로 시간을 동기화하는 것이 아닌 명령어를 수행한 구

순간 한번만 실행되는 명령어입니다.

단순히 시스템간의 시간을 맞추고 싶다면 crontab 에 이 명령을 적절한 시간에 반복

하도록 등록하는 것도 하나의 방법이 될 수 도 있습니다.


 두 번째 방법으로는 timed Daemon을 사용할 수 있습니다.

Timed는 동일 네트웍에 있는 서버들의 시간을 동기화시키는 데몬입니다.

timed는 주기적으로 시간을 확인해 동기화 하지만 20ms의 정도의 서버의 시간 차는 무시하고

"sync 시간"을 결정하므로 무시된 서버의 시간은 시간 차이가 큰 서버들간의 sync time으로 인해 큰 차

이로 변경 될 수 있습니다.  


세번 째 방법이 바로 NTP를 이용한 시간 동기화 방법입니다.

NTP는 xntpd Daemon을 이용해 시간을 동기화 하며 xnptd는 timed와는 다르게 동일

network이 아닌 시스템 간에도 사용할 수 있으며 바로 동기화가 되는 것이 아니라 (1분에 약 5초 정도씩 보정이 됩니다.

맞출려고 하는 서버가 시간이 느렸던 것이면 실제 시간으로는 60초가 흘렀지만 시

스템 시간으로는 65초가 흐른것으로 되어 천천히 시간을 맞추는 것)

참고로 NTP은 UDP 포트 123을 사용합니다. 이 포트가 인터넷으로 열려 있지 않으

면 서버를 인터넷 SNTP 서버와 동기화할 수 없습니다.

기본적으로 timed는 설정 후 sync를 시키면 바로 시간을 맞추는 반면  xntpd는 8분

정도 후에 서버와 클라이언트 간에 시간이 맞추어지게 됩니다.

xntpd의 경우 이론상 최초 실행 후 timesysnc check는 분당 이루어지나 그 시간은 서

버간 거리나 clock drift에 의해 바뀔 수 있으며 보통 6~10분 가량 걸리는 것으로 나타나고 있습니다.

 



xntpd를 이용한 시간 동기화

 /etc/ntp.conf ,  /etc/ntp.drift 와  /etc/ntp.trace 파일이 있는지 확인합니다


ntp


 vi를 이용하여 /etc/ntp.conf 파일을 아래와 같이 수정합니다. 


ntp


startsrc -s xntpd 를 이용하여 xntpd를 살립니다.
 

ntp


ps -ef 명령어로 Daemon이 정상적으로 살아있는지 확인합니다.


ntp


 6~8 분 정도 후에 lssrc -ls xntpd 결과 값에서 아래 표시된 값들을 확인합니다.


ntp


ntpq –p 로 시스템이 시간을 동기화 시키는 과정을 확인 할 수있습니다. (또는 xntpdc -p )


ntp

대부분의 경우 Reach 값이 377에 다다를 경우 시간의 동기화가 완료됩니다.

주의점

xntpd는 Server와 Client간 1000초(16분) 이상의 시간 차이가 발생하면 더 이상 시간

을 동기화 하지 않습니다.
date 확인 후 시간차가 크다면 # smitty date 를 통해 시간

을 근접하게 바꾸어 줍니다.

(아시겠지만 데이터 베이스 서버나 특정 어플리케이션의 경우 시간에 민감하기 때문에 시간을 과거로 돌릴경우 실행이 안되거나 데이터가 깨질 수 도 있습니다.)

 startsrc -s xntpd -a "-x"  

- x 옵션을 통해 Time backward 를 막을 수 있습니다. 이로서 시간이 늦는 서버의 시

간을 동기화 하는 것을 방지해(시간이 과거로 돌아가는 것)시간차에 민감한 DB들의

충돌을 방지할 수 있습니다

보통 6~10분 사이에 시스템간 시간은 동기화(시스템간의 시간차에 따라 더 오래 걸

릴 수도 있습니다)가 되며 동기화 설정후 바로 시간을 맞추고 싶다면 ntp server 가

active 인 상태인 Client에서

ntpdate <ip_of_Sever> 또는 #setclock hostname

startsrc -s xntpd -a "-x"

로 데몬을 살리면 시간은 바로 같아집니다.

후에 재부팅후에도 같은 설정을 적용하고 싶다면

모든 시스템의  /etc/rc.tcpip 파일에 start /usr/sbin/xntpd "$src_running" "-x" 항목

을 추가해주시면

됩니다..

xntpd를 이용해 시간을 동기화 한 후 Time Server의 시간을 바꾸면 전체 Client의 시

간이 바뀌므로 주의해서 시간관리를 해야 합니다. Time Server의 시간을 임시로 바

꾸고자 하면 반드시 xntpd daemon을 stop 시킨 후 (#stopsrc -s xntpd) 작업을 하는것

을 권해 드립니다.

 지금까지 NTP을 이용해 시간을 맞추는것에 대해 간단히 알아 봤는데 다음에는

좀더 자세하게 다루어 보겠습니다.

보신 분들께 도움이 되었으면 좋겠습니다. ^^

반응형