Amazon Elastic Compute Cloud
Linux 인스턴스용 사용 설명서

Linux 인스턴스의 시간 설정

많은 서버 작업과 프로세스에서 일관되고 정확한 시간 참조가 중요합니다. 대부분의 시스템 로그에는 문제가 발생한 시간과 이벤트가 발생한 순서를 파악하는 데 사용할 수 있는 타임스탬프가 포함되어 있습니다. AWS CLI 또는 AWS SDK를 사용하여 인스턴스에서 요청하는 경우 이러한 도구가 사용자를 대신하여 요청에 서명합니다. 인스턴스의 날짜와 시간이 잘못 설정되어 있으면 서명 날짜가 요청 날짜와 일치하지 않아 AWS가 해당 요청을 거부할 수 있습니다.

Amazon은 Amazon Time Sync Service를 제공합니다. 이 서비스는 모든 EC2 인스턴스에서 액세스할 수 있고 다른 AWS 서비스에 의해서도 사용됩니다. 이 서비스에서는 각 리전의 위성 연결 및 원자 기준 시계 집합을 사용하여 NTP(Network Time Protocol)를 통해 협정 세계시(UTC) 세계 표준의 정확한 현재 시간 판독값을 제공합니다. Amazon Time Sync Service는 UTC에 추가된 윤초를 자동으로 평활화합니다.

Amazon Time Sync Service는 VPC에서 실행 중인 모든 인스턴스의 169.254.169.123 IP 주소에서 NTP를 통해 제공됩니다. 인스턴스에서 인터넷 액세스가 필요하지 않기 때문에 액세스를 허용하도록 보안 그룹 규칙이나 네트워크 ACL 규칙을 구성할 필요가 없습니다. 최신 버전의 Amazon Linux 2 및 Amazon Linux AMI는 기본적으로 Amazon Time Sync Service와 동기화됩니다.

다음 절차에 따라 chrony 클라이언트를 사용하여 인스턴스에서 Amazon Time Sync Service를 구성합니다. 또는 외부 NTP 소스를 사용할 수 있습니다. NTP 및 퍼블릭 타임 소스에 대한 자세한 내용은 http://www.ntp.org/를 참조하십시오. 외부 NTP 타임 소스가 작동하기 위해서는 인스턴스가 인터넷에 액세스해야 합니다.

Amazon Linux AMI에서 Amazon Time Sync Service 구성

참고

Amazon Linux 2에서 기본 chrony 구성은 Amazon Time Sync Service IP 주소를 사용하도록 이미 설정되어 있습니다.

Amazon Linux AMI에서 Amazon Time Sync Service에서 서버 항목을 추가하도록 chrony 구성 파일을 편집해야 합니다.

Amazon Time Sync Service를 사용하도록 인스턴스를 구성하려면

  1. 인스턴스를 연결하고 NTP 서비스를 제거합니다.

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. chrony 패키지를 설치합니다.

    [ec2-user ~]$ sudo yum install chrony
  3. vim 또는 nano과 같은 텍스트 편집기를 사용하여 /etc/chrony.conf 파일을 엽니다. 파일이 다음 라인을 포함하고 있는지 확인합니다.

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    이 라인이 존재할 경우, Amazon Time Sync Service가 이미 구성된 상태이기 때문에 다음 단계로 넘어갈 수 있습니다. 라인이 없는 경우에는 파일에 이미 존재하는 다른 server 또는 pool 문 뒤에 라인을 추가하고 변경 사항을 저장합니다.

  4. chrony 데몬(chronyd)을 시작합니다.

    [ec2-user ~]$ sudo service chronyd start
    Starting chronyd: [ OK ]

    참고

    RHEL 및 CentOS(최대 버전 6까지)에서 서비스 이름은 chrony이 아니라 chronyd입니다.

  5. chkconfig 명령을 사용해서 매번 시스템이 부팅할 때마다 시작되도록 chronyd를 구성합니다.

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. chrony169.254.169.123 IP 주소를 사용하여 시간을 동기화하고 있는지 확인합니다.

    [ec2-user ~]$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- 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 6 17 43 -30us[ -226us] +/- 287us ^- ec2-12-34-231-12.eu-west> 2 6 17 43 -388us[ -388us] +/- 11ms ^- tshirt.heanet.ie 1 6 17 44 +178us[ +25us] +/- 1959us ^? tbag.heanet.ie 0 6 0 - +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:c43:e312:ce77:> 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:dab:2701:b70:b> 0 6 0 - +0ns[ +0ns] +/- 0ns

    반환된 출력에서 ^*는 기본 설정된 타임 소스를 나타냅니다.

  7. chrony에서 보고된 시간 동기화 지표를 확인합니다.

    [ec2-user ~]$ chronyc tracking
    Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 22 13:18:34 2017 System time : 0.000000626 seconds slow of NTP time Last offset : +0.002852759 seconds RMS offset : 0.002852759 seconds Frequency : 1.187 ppm fast Residual freq : +0.020 ppm Skew : 24.388 ppm Root delay : 0.000504752 seconds Root dispersion : 0.001112565 seconds Update interval : 64.4 seconds Leap status : Normal

Ubuntu에서 Amazon Time Sync Service 구성

Amazon Time Sync Service에서 서버 항목을 추가하도록 chrony 구성 파일을 편집해야 합니다.

Amazon Time Sync Service를 사용하도록 인스턴스를 구성하려면

  1. 인스턴스를 연결해 apt를 사용하여 chrony 패키지를 설치합니다.

    ubuntu:~$ sudo apt install chrony

    참고

    필요할 경우 sudo apt update를 실행하여 먼저 인스턴스를 업데이트합니다.

  2. vim 또는 nano과 같은 텍스트 편집기를 사용하여 /etc/chrony/chrony.conf 파일을 엽니다. 파일에 이미 존재하는 server 또는 pool 문 앞에 다음 라인을 추가하고 변경 사항을 저장합니다.

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  3. chrony 서비스를 다시 시작합니다.

    ubuntu:~$ sudo /etc/init.d/chrony restart
    [ ok ] Restarting chrony (via systemctl): chrony.service.
  4. chrony169.254.169.123 IP 주소를 사용하여 시간을 동기화하고 있는지 확인합니다.

    ubuntu:~$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- 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 6 17 12 +15us[ +57us] +/- 320us ^- tbag.heanet.ie 1 6 17 13 -3488us[-3446us] +/- 1779us ^- ec2-12-34-231-12.eu-west- 2 6 17 13 +893us[ +935us] +/- 7710us ^? 2a05:d018:c43:e312:ce77:6 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? 2a05:d018:d34:9000:d8c6:5 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? tshirt.heanet.ie 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 10y +0ns[ +0ns] +/- 0ns

    반환된 출력에서 ^*는 기본 설정된 타임 소스를 나타냅니다.

  5. chrony에서 보고된 시간 동기화 지표를 확인합니다.

    ubuntu:~$ chronyc tracking
    Reference ID : 169.254.169.123 (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 29 07:41:57 2017 System time : 0.000000011 seconds slow of NTP time Last offset : +0.000041659 seconds RMS offset : 0.000041659 seconds Frequency : 10.141 ppm slow Residual freq : +7.557 ppm Skew : 2.329 ppm Root delay : 0.000544 seconds Root dispersion : 0.000631 seconds Update interval : 2.0 seconds Leap status : Normal

SUSE Linux에서 Amazon Time Sync Service 구성

https://software.opensuse.org/package/chrony에서 chrony 설치

vim 또는 nano과 같은 텍스트 편집기를 사용하여 /etc/chrony.conf 파일을 엽니다. 파일이 다음 라인을 포함하고 있는지 확인합니다.

server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

이 라인이 표시되지 않는 경우, 추가합니다. 다른 서버 혹은 풀 라인 설명 yast 열고 chrony 서비스 실행

Amazon Linux에서 표준 시간대 변경

기본적으로 Amazon Linux 인스턴스는 UTC(협정 세계시) 표준 시간대로 설정되지만, 인스턴스의 시간을 현지 시간 또는 네트워크의 다른 표준 시간대로 변경해야 할 수도 있습니다.

중요

이 절차는 Amazon Linux에서 사용하기 위한 것입니다. 기타 배포에 대한 자세한 내용은 해당 설명서를 참조하십시오.

인스턴스의 표준 시간대를 변경하려면 다음을 수행합니다.

  1. 인스턴스에서 사용할 표준 시간대를 식별합니다. /usr/share/zoneinfo 디렉터리에는 표준 시간대 데이터 파일이 계층 구조로 들어 있습니다. 해당 위치의 디렉터리 구조를 탐색하여 원하는 표준 시간대의 파일을 찾습니다.

    [ec2-user ~]$ ls /usr/share/zoneinfo Africa Chile GB Indian Mideast posixrules US America CST6CDT GB-Eire Iran MST PRC UTC Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET Arctic EET GMT0 Israel Navajo right W-SU ...

    이 위치의 일부 항목(예: America)은 디렉터리이며, 이러한 디렉터리에는 도시별 표준 시간대 파일이 들어 있습니다. 인스턴스에 사용할 도시 또는 해당 표준 시간대에 속하는 도시를 찾습니다. 이 예제에서는 로스앤젤레스의 표준 시간대 파일인 /usr/share/zoneinfo/America/Los_Angeles를 사용할 수 있습니다.

  2. /etc/sysconfig/clock 파일을 새 표준 시간대로 업데이트합니다.

    1. 자주 사용하는 텍스트 편집기(vim 또는 nano)로 /etc/sysconfig/clock 파일을 엽니다. /etc/sysconfig/clock의 경우 root 소유이므로 편집기 명령으로 sudo를 사용해야 합니다.

    2. ZONE 항목을 찾아서 표준 시간대 파일로 변경합니다. 경로에서 /usr/share/zoneinfo 부분은 생략하십시오. 예를 들어 로스앤젤레스 표준 시간대로 변경하려면 ZONE 항목을 다음과 같이 변경합니다:

      ZONE="America/Los_Angeles"

      참고

      UTC=true 항목을 다른 값으로 변경하지 마십시오. 이 항목은 하드웨어 클록에 대한 것으로, 인스턴스에 대해 다른 표준 시간대를 설정할 때 따로 조정할 필요가 없습니다.

    3. 파일을 저장하고 텍스트 편집기를 종료합니다.

  3. 인스턴스가 현지 시간 정보를 참조할 때 표준 시간대 파일을 찾을 수 있도록 /etc/localtime과 표준 시간대 파일 사이에 심볼 링크를 생성합니다.

    [ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
  4. 시스템을 재부팅하여 모든 서비스와 애플리케이션에 새로운 표준 시간대 정보를 적용합니다.

    [ec2-user ~]$ sudo reboot