[AWS] NTP 시간 동기화 및 타임존 설정

앙금빵·2021년 8월 28일
0

AWS Compute Service

목록 보기
7/9
post-thumbnail
post-custom-banner

NTP (Network Time Protocol)

  • Amazon Time sync Service는 NTP(Network Time Protocol)를 통해 제공되는 시간 동기화 서비스

NTP 동기화를 하는 이유

  • 각종 로그 설정이나 디버깅에 있어 서버마다 다른 시간을 바라보고 있으면 디버깅이 어려워지며 특정 어플리케이션에서는 서비스에 문제가 발생 될 수 있다.
  • 모든 서버가 하나의 시간을 바라볼 수 있도록 시간을 동기화 해주어야 한다.
  • RHEL 7 이전에는 NTP를 기본 네트워크 시간 프로토콜로 사용, RHEL 7 이후부터 Chrony 대체

NTP vs Chrony

NTP

  • 항상 연결이 보장된 상황에서는 NTP 사용
  • 영구적으로 유지되는 시스템 혹은 브로드캐스트나 멀티캐스트 IP를 사용하거나 Autokey Protocol로 패킷 인증을 수행해야 하는 시스템에 사용

Chrony

  • 모바일이나 가상 시스템처럼 빈번한 대기, 접속 차단이 불가피한 상황에서는 Chrony 사용
  • 자주 중단되거나 간헐적으로 연결이 끊어지는 시스템에 가장 적합

2017 년도부터 각 리전에서 멀티 위성 연결 및 원자 시계 플릿을 사용하여 매우 정확한 기준 시계를 제공하고 NTP(Network Time Protocol)를 통해 제공되는 시간 동기화 서비스인 Amazon Time Sync Service를 시작할 수 있다.

  • Amazon Linux2 OS는 기본적으로 Amazon Time Sync Service로 설정이 되어 있다.
    즉, chrony로 시간을 동기화 하고 있고 chrony 설정이 Amazon Time Sync Service IP로 되어있다는 것이다.
  • Amazon Time Sync Service IP 는 169.254.169.123 로컬 IP 주소이며 외부 인터넷 Access를 별도로 구성할 필요 없이 Private Subnet 안에서도 서비스에 안전하게 액세스할 수 있다.

Chrony 서비스

# 서울 리전에서 인스턴스 시간을 보면 현지 시간과 다른 것을 볼 수 있다.

[ec2-user@localhost ~]$ date
Tue Aug 24 04:03:26 UTC 2021

#(Line 2) server 169.254.169.123 행이 추가되었는지 확인해보고 안되어 있으면 수정한다.
[ec2-user@localhost ~]$ sudo vim /etc/chrony.conf

1 # use the Amazon Time Sync Service (if available)
2 server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

# 시스템 부팅될 때마다 시작하도록 설정
[ec2-user@localhost ~]$ sudo chkconfig chronyd on
Note: Forwarding request to 'systemctl enable chronyd.service'.

# chrony가 169.254.169.123 IP 주소를 사용하여 시간 동기화를 하고 있는지 확인
[ec2-user@localhost ~]$ 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               
===============================================================================
^* 169.254.169.123               3   4   377    11  +4082ns[+4577ns] +/-  506us
^- dadns.cdnetworks.co.kr        2   9   377   283  -2599us[-2602us] +/-   51ms
^- icn.clearnet.pw               2  10   377   590  -2285us[-2288us] +/-   33ms
^- any.time.nl                   2  10   377   389   +780us[ +778us] +/-   47ms
^- jieun.server.reviservice>     3  10   377   983   -354us[ -341us] +/-   24ms
-----

# 시간 동기화 지표 확인
[ec2-user@localhost ~]$ chronyc tracking

Reference ID    : A9FEA97B (169.254.169.123)
Stratum         : 4
Ref time (UTC)  : Tue Aug 24 04:32:38 2021
System time     : 0.000000527 seconds fast of NTP time
Last offset     : -0.000000187 seconds
RMS offset      : 0.000000937 seconds
Frequency       : 23.054 ppm slow
Residual freq   : -0.000 ppm
Skew            : 0.021 ppm
Root delay      : 0.000476114 seconds
Root dispersion : 0.000272936 seconds
Update interval : 16.2 seconds
Leap status     : Normal

타임존 설정

# 현재 시간 확인
[root@localhost ~] date
Tue Aug 24 04:40:30 UTC 2021

# 시스템 전역 timezone은 /etc/sysconfig/clock 에 정의, 한국 기준으로 재설정하자.

vim /etc/sysconfig/clock

# 수정 전
ZONE="UTC"
UTC=true

# 수정 후
ZONE="Asia/Seoul"
KST=True

# /etc/localtime 내용 확인 -> UTC로 내용 구성이 되어있음
[root@localhost ~] cat /etc/localtime
TZif2UTCTZif2 
UTC0

# 기존(UTC 시간) /etc/localtime 삭제
[root@localhost ~] rm /etc/localtime

# 한국 표준시간대 정보를 심볼릭 링크 설정
[root@localhost ~] ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 변경사항 확인
[root@localhost ~] date
Tue Aug 24 13:43:32 KST 2021

# 심볼릭 링크 방식 외 zoneinfo 디렉토리에서 cp -p 로 덮어씌우는 방식도 있다.
# tzselect 명령어로도 쉽게 설정 가능하다.
profile
Cloud 관련 개인 공부 지식들을 기록하는 공간입니다.
post-custom-banner

0개의 댓글