시간을 동기화하는 방법으로 NTP 와 rdate 를 이용하는 방법을 사용합니다. 소수점까지 정확한 단위의 동기화가 필요하다면 원자단위의 NTP 를 이용해야 합니다.
NTP 시간 동기화
NTP(Network Time Protocol)는 인터넷상의 시간을 정확하게 유지시켜 주기 위한 통신망 시간 규약이다. 라디오나 원자시계에 맞추어 시간을 조정하며 밀리초 1/1000초 단위까지 시간을 맞출 수 있다.
기본적으로, NTP 방식은 straum이라는 계층구조를 가지는데 straum 0 은 GPS나 세슘 원자 시계등 시간을 구하는 장비를 말하며, straum 1은 GPS 나 세슘 원자 시계등에서 직접 시간을 동기화하는 서버를 의미한다. strum 2 부터는 트리 구조를 형성하게 된다. 보통 straum 2에서 동기화를 하고, 이 동기화를 받은 straum 3 서버에서 나머지 같이 운영하는 서버들을 peer로 해서 동기화를 시키므로써 straum 1 서버들의 부하를 줄인다.
NTP 는 UDP 123을 기본 포트로 사용(포트 개방 필요)한다.
우리나라에서 운영되고 있는 NTP 서버
- kr.pool.ntp.org
- time.bora.net
- time.nuri.net
NTP 설치
CentOS 6.4 Minimal 버전에는 NTP 가 설치되어 있지 않다. yum 을 이용해서 설치하자.
yum install ntp
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
ntp x86_64 4.2.4p8-3.el6.centos base 444 k
Installing for dependencies:
libedit x86_64 2.11-4.20080712cvs.1.el6 base 74 k
ntpdate x86_64 4.2.4p8-3.el6.centos base 58 k
Transaction Summary
================================================================================
Install 3 Package(s)
NTP 설정
peer 설정이다. 즉, 시간 동기화를 받기 위한 설정내용이다. 기본적으로 입력되어있는 server 0.centos.pool.ntp.org
등을 주석처리하거나 삭제하고 국내 NTP 서버로 대체한다.
vi /etc/ntp.conf
# 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
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server kr.pool.ntp.org
server time.bora.net
server time.kornet.net
NTP 서비스를 시작프로그램에 등록한다.
chkconfig ntpd on
NTP 서비스 등록 확인
chkconfig --list | grep ntpd
ntpd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
NTP 서비스를 시작한다.
/etc/init.d/ntpd start
ntpd (을)를 시작 중: [ OK ]
NTP 는 동기화하기까지 5~10분의 시간이 걸리니 여유를 갖도록 하자.
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*121.182.147.191 .GPS. 1 u 24 64 377 9.611 9.432 4.998
+time.bora.net 90.1.14.51 2 u 1 64 177 7.049 -4.907 12.329
+ntp1.sjtel.net 192.168.18.6 2 u 4 64 377 9.096 10.322 5.248
- * : 현재 sync 를 받고 있음을 의미
- + : ntp 알고리즘에 의해 접속은 가능하지만 sync 를 하고 있지는 않음을 의미
- - : ntp 알고리즘에 의해 접속은 가능하지만 sync 가능 리스트에서 제외
- blank : 접속이 불가능함을 의미
remote는 sync 를 하는 straum 2 서버주소를 가리키며, refid는 각 straum 2 서버가 현재 sync 를 하고 있는 straum 1 서버를 보여준다. st가 16일 경우 해당 서버에 접속 할 수 없음을 의미한다.
NTP 서버 설정
단순히 시간 동기화가 목적이 아니라 자체 동기화 서버를 구축하려는 경우 아래의 설정이 도움이 될지도 모르겠다.
vi /etc/ntp/ntp.conf
restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
# straum 2 server list
server ntp.ewha.net
server ntp1.epidc.co.kr
server time.bora.net
server time.wonkwang.ac.kr
server time.korserve.net
server noc6-3.koren21.net
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys
- /etc/ntp.conf와 driftfile 과 keys의 경우 배포본마다 위치가 다를 수 있으니 확인을 하도록 한다.
- restric 설정은 peer 들이 본 서버로 sync 하는 것에 대한 제한을 한다.
- restrict default nomodify notrap noquery 설정은 기본으로 모든 권한을 주지 않음을 의미한다.
- restrict 127.0.0.1 설정은 127.0.0.1 즉, 서버 자신에서는 모든 권한을 가진다.
- restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap 설정은 192.168.0.0 ~ 192.168.0.255 c class 에서는 질의를 할 수 있는 권한을 가진다. 즉, 위의 2 라인은 항상 기본으로 들어가는 설정이며, peer 를 거느릴 서버에서는 (즉 A 의 입장에서는) 하위 peer 들의 질의를 받을수 있도록 3 번째 라인과 같이 restrict 설정을 해 주어야 한다.
설정을 마쳤다면, service ntpd restart
명령으로 ntpd 데몬을 시작하고, ntpq 명령을 이용하여 sync 를 잘 하고 있는지 확인을 한다.