서버를 이용해 서비스를 하는 경우 시간 동기화를 반드시 해줘야 합니다.
시간 동기화를 하지 않는경우 아주 조금씩 시간이 안맞고 이것이 쌓이면 시간이 지날 수록 초, 분 단위까지 실제 시간과 틀어지게 되고 특히 여러대의 서버를 이용해 서비스를 하는 경우 시간이 안맞으면서 발생하는 여러가지 문제를 내포 할 수 있습니다.
고맙게도 전세계에 NPT 프로토콜을 이용해서 무료로 정확한 시간 동기화를 제공해주는 서버가 많이 있습니다.
우리는 해당 프로토콜이 구현된 클라이언트를 설치해서 원하는 서버를 지정하기만 하면 서버의 시간은 자동으로 동기화 됩니다.
전통적으로 유닉스 계열의 경우 ntpd 라는 데몬을 사용했었는데, 최근에 chrony 라는 NTP 클라이언트가 나와서 정밀하게 동기화를 할 수 있다고 합니다.
사설망에 고립된 서버의 시간 동기화 ☞
NTP 서비스는 인터넷에 연결되어 있어야 시간을 동기화 할 수 있습니다.
DB 서버 처럼 보안을 위해 사설망에 고립되어 있는 서버들은 바로 NTP 서버에 연결을 할 수 없기 때문에 시간 동기화를 할 수 없습니다.
이런 경우 DMZ 존에 존재하는 Application 서버나 Web 서버에 NTP 데몬을 를 설치하고 사설망에서는 DMZ 서버와 시간을 동기화 하는 방식으로 적용하면 됩니다. 대부분의 NTP 데몬은 스스로가 NTP 클라이언트가 되기도 하지만 다른 서버에게 시간을 전달하는 NTP 서버 역활도 가능합니다.
여기서는 chrony를 이용하도록 하겠습니다.
1. NTP 데몬 설치 확인 및 chrony 설치
모든 설치전에는 설치 패키지 들을 최신 상태로 패치 해주는 것이 좋습니다.
$ sudo apt update -y
$ sudo apt upgrade -y
systemd-timesyncd 와 충돌이 있을 수 있으니 현재 동작 중인지 확인
$ sudo systemctl status systemd-timesyncd
Unit systemd-timesyncd.service could not be found.
$
설치가 되어 있다고 나오면 중지 하는 것을 권장합니다.
$ sudo systemctl disable systemd-timesyncd
chrony 를 설치합니다.
$ sudo apt install chrony
2. chrony 동작 상태 점검
$ systemctl status chronyd
$ chronyc tracking
3. 동기화 상태 확인
$ chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- ipv4.ntp3.rbauman.com 2 6 37 53 +18ms[ +14ms] +/- 39ms
^- 203.32.26.46 3 6 77 43 -2286us[-7230us] +/- 187ms
^* time.ravnus.com 2 6 177 7 -451us[ -11ms] +/- 4624us
^- mail.innotab.com 3 6 177 7 -4178us[-4178us] +/- 39ms
$
Ubuntu 기본 패키지에 지정된 time 서버와 동기화를 하고 있습니다.
대한민국에서 운영하는 물리적으로 가까운 타임서버를 쓰는 것이 아무래도 좋을 것 같습니다.
확인 결과 ntp.bora.net 도메인은 삭제 된 것 같습니다.
아래 서버들에게 시간을 동기화 하도록 설정하겠습니다.
server time.kriss.re.kr iburst
server ntp.kornet.net iburst
server time.nuri.net iburst
server kr.pool.ntp.org iburst
/etc/chrony/chrony.conf 파일을 편집합니다.
$ sudo vi /etc/chrony/chrony.conf
... 생략 ...
# Use Debian vendor zone.
#pool 2.debian.pool.ntp.org iburst # 기존 내용 주석 처리
server time.kriss.re.kr iburst # 한국표준과학연구원 (KRISS)
server ntp.kornet.net iburst # KT
server time.nuri.net iburst # LGU+
server kr.pool.ntp.org iburst # 대한민국 NTP 풀 프로잭트
... 생략 ...
~
~
~
$
chronyd 를 재시작 합니다.
$ sudo systemctl restart chrony
동기화가 잘 되고 있는지 확인 합니다.
$ chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 27.96.158.81 3 6 377 44 -2913us[-3045us] +/- 15ms
^? 168.126.3.6 0 8 0 - +0ns[ +0ns] +/- 0ns
^+ 106.247.248.106 2 6 375 44 +5059us[+5059us] +/- 33ms
$
이제 재부팅을 해도 시간이 정확하게 동기화 될 것 입니다.
끝.
'UNIX-Networking' 카테고리의 다른 글
[AWS] EC2 추가, SK브로드밴드 이용하는 경우 outbound 22(ssh) port 차단 문제 (0) | 2025.04.29 |
---|---|
crontab 명령 중복 실행 방지 (0) | 2024.05.30 |
Ubuntu GUI 환경 '원격 데스트톱연결'로 접속하기 (1) | 2022.11.29 |
Linux crone tab 으로 MySQL 일단위 정기 백업 (최근 1주일치만 유지 하기) (1) | 2019.12.23 |
CentOS 7 에 Tomcat 7 자동 재시작 하도록 서비스 등록 (0) | 2018.11.15 |