Linux 인스턴스의 시간 설정
많은 서버 작업과 프로세스에서 일관되고 정확한 시간 참조가 중요합니다. 대부분의 시스템 로그에는 문제가 발생한 시간과 이벤트가 발생한 순서를 파악하는 데 사용할 수 있는 타임스탬프가 포함되어 있습니다. AWS CLI 또는 AWS SDK를 사용하여 인스턴스에서 요청하는 경우 이러한 도구가 사용자를 대신하여 요청에 서명합니다. 인스턴스의 날짜와 시간이 잘못 설정되어 있으면 서명 날짜가 요청 날짜와 일치하지 않아 AWS이(가) 해당 요청을 거부할 수 있습니다.
Amazon은 Amazon Time Sync Service를 제공합니다. 이 서비스는 모든 EC2 인스턴스에서 액세스할 수 있고 다른 AWS 서비스에도 사용됩니다. 이 서비스에서는 각 AWS 리전의 위성 연결 및 원자 기준 시계 집합을 사용하여 NTP(Network Time Protocol)를 통해 협정 세계시(UTC) 세계 표준의 정확한 현재 시간 판독값을 제공합니다. Amazon Time Sync Service는 UTC에 추가된 윤초를 자동으로 평활화합니다.
Amazon Time Sync Service는 169.254.169.123
IPv4 주소 또는 fd00:ec2::123
IPv6 주소에서 NTP를 통해 제공됩니다. IPv6 주소는 Nitro 시스템에 구축된 인스턴스에서만 액세스할 수 있습니다. 인스턴스에서 인터넷 액세스가 필요하지 않기 때문에 액세스를 허용하도록 보안 그룹 규칙이나 네트워크 ACL 규칙을 구성할 필요가 없습니다. 최신 버전의 Amazon Linux 2 및 Amazon Linux AMI는 기본적으로 Amazon Time Sync Service와 동기화됩니다.
Amazon Time Sync 링크-로컬 서비스에 백업하고 Amazon EC2 외부의 리소스를 Amazon Time Sync Service에 연결하려면, time.aws.com에 있는 Amazon Time Sync Public NTP 풀을 사용하면 됩니다. Amazon Time Sync Service와 마찬가지로 Amazon Time Sync Public NTP는 UTC에 추가된 윤초를 자동으로 평활화합니다. Amazon Time Sync Service Public NTP는 각 AWS 리전의 위성 연결 및 원자 기준 시계 플릿을 사용하여 전 세계적으로 지원됩니다.
다음 절차에 따라 chrony
클라이언트를 사용하여 인스턴스에서 Amazon Time Sync Service를 구성합니다. 또는 외부 NTP 소스를 사용할 수 있습니다. NTP 및 퍼블릭 타임 소스에 대한 자세한 내용은 http://www.ntp.org/
Windows 인스턴스의 경우 Windows 인스턴스에 대한 시간 설정 섹션을 참조하세요.
주제
Amazon Time Sync Public NTP를 사용하여 클라이언트의 시간을 구성합니다.
Amazon Time Sync를 사용하도록 클라이언트 컴퓨터를 구성할 수 있습니다.
Apple macOS용 Amazon Time Sync Public NTP를 구성하려면
-
클라이언트 컴퓨터에서 System Preferences(시스템 기본 설정)을 엽니다.
-
Date & Time(날짜 및 시간)을 선택한 다음 Date & Time(날짜 및 시간) 탭을 선택합니다.
-
변경하려면 잠금 아이콘을 선택하고 암호를 묻는 메시지가 표시되면 암호를 입력합니다.
-
Set date and time automatically(날짜 및 시간 자동 설정)에
time.aws.com
을 입력합니다.
Linux(chrony 또는 ntpd)용 Amazon Time Sync Public NTP를 구성하려면
-
다음과 같은 자주 사용하는 텍스트 편집기를 사용하여
/etc/chrony/chrony.conf
(chrony를 사용하는 경우) 또는/etc/ntp.conf
(ntpd를 사용하는 경우)을(를) 편집합니다.-
인스턴스가 smeared 서버와 비 smeared 서버를 혼용하지 않도록 하려면
server
(으)로 시작하는 줄을 제거하거나 주석 처리하세요.중요
인스턴스가 로컬 Amazon Time Sync Service에 연결된 상태로 유지되도록 하려면 다음 줄을 편집하지 마세요.
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
-
다음 행을 추가합니다.
pool time.aws.com iburst
-
-
NAME을 선택합니다.
-
다음 명령을 사용하여 대몬(daemon)을 다시 시작합니다.
-
chrony
sudo service chrony force-reload
-
ntpd
sudo service ntp reload
-
-
자주 사용하는 텍스트 편집기를 사용하여
systemd/timesyncd
파일을 편집하고[Time]
블록의 내용을 다음과 같이 설정합니다. Amazon Time Sync Service Public NTP를 폴백 서버로 구성하면 해당 서버가 유일한 NTP 서버로 선택됩니다. 이렇게 하면 smeared 시간 서버와 비 smeared 시간 서버 간을 실수로 전환하는 것을 방지할 수 있습니다.[Time] NTP=FallbackNTP=time.aws.com
-
적절한 권한이 있는 사용자로서 다음 명령을 사용하여
systemd-timesyncd
을(를) 다시 시작합니다.systemctl restart systemd-timesyncd.service
-
다음 명령을 사용하여 시스템에서 Amazon Time Sync Public NTP 풀을 사용하고 있는지 확인합니다.
timedatectl show-timesync | grep
ServerName
성공적으로 구성되면 다음과 같은 출력이 표시됩니다.
ServerName
=time.aws.com
IPv4 주소를 사용하는 EC2 인스턴스의 시간 구성
이 섹션에서는 Linux 배포 유형에 따라 IPv4 주소를 사용하는 EC2 인스턴스의 시간을 설정하는 방법에 대해 설명합니다.
주제
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를 사용하도록 인스턴스를 구성하려면
-
인스턴스를 연결하고 NTP 서비스를 제거합니다.
[ec2-user ~]$
sudo yum erase 'ntp*'
-
chrony
패키지를 설치합니다.[ec2-user ~]$
sudo yum install chrony
-
/etc/chrony.conf
또는 vim과 같은 텍스트 편집기를 사용하여 nano 파일을 엽니다. 파일이 다음 라인을 포함하고 있는지 확인합니다.server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
이 라인이 존재할 경우, Amazon Time Sync Service가 이미 구성된 상태이기 때문에 다음 단계로 넘어갈 수 있습니다. 라인이 없는 경우에는 파일에 이미 존재하는 다른
server
또는pool
문 뒤에 라인을 추가하고 변경 사항을 저장합니다. -
chrony
데몬(chronyd
)을 다시 시작합니다.[ec2-user ~]$
sudo service chronyd restart
Starting chronyd: [ OK ]
참고
RHEL 및 CentOS(최대 버전 6까지)에서 서비스 이름은
chrony
이 아니라chronyd
입니다. -
chkconfig
명령을 사용해서 매번 시스템이 부팅할 때마다 시작되도록chronyd
를 구성합니다.[ec2-user ~]$
sudo chkconfig chronyd on
-
chrony
가169.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
반환된 출력에서
^*
는 기본 설정된 타임 소스를 나타냅니다. -
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를 사용하도록 인스턴스를 구성하려면
인스턴스를 연결해
apt
를 사용하여chrony
패키지를 설치합니다.ubuntu:~$
sudo apt install chrony
참고
필요할 경우
sudo apt update
를 실행하여 먼저 인스턴스를 업데이트합니다./etc/chrony/chrony.conf
또는 vim과 같은 텍스트 편집기를 사용하여 nano 파일을 엽니다. 파일에 이미 존재하는server
또는pool
문 앞에 다음 라인을 추가하고 변경 사항을 저장합니다.server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
-
chrony
서비스를 다시 시작합니다.ubuntu:~$
sudo /etc/init.d/chrony restart
Restarting chrony (via systemctl): chrony.service.
-
chrony
가169.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
반환된 출력의
^*
로 시작되는 줄은 기본 설정된 타임 소스를 나타냅니다. -
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
/etc/chrony.conf
또는 vim과 같은 텍스트 편집기를 사용하여 nano 파일을 엽니다. 파일이 다음 라인을 포함하고 있는지 확인합니다.
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
이 라인이 표시되지 않는 경우, 추가합니다. 다른 서버 혹은 풀 라인 설명 yaST를 열고 chrony 서비스를 실행합니다.
IPv6 주소를 사용하는 EC2 인스턴스의 시간 구성
이 섹션에서는 IPv6 주소를 사용하는 EC2 인스턴스의 Amazon Time Sync Service를 구성하는 경우에 IPv4 주소를 사용하는 EC2 인스턴스의 시간 구성에서 설명하는 프로세스가 어떻게 달라지는지 설명합니다. 전체 Amazon Time Sync Service 구성 프로세스를 설명하지는 않습니다. IPv6 주소는 Nitro 시스템에 구축된 인스턴스에서만 액세스할 수 있습니다.
참고
chrony.conf 파일에 IPv4 주소 및 IPv6 주소 항목을 함께 사용하지 않는 것이 좋습니다. IPv4 및 IPv6 NTP 패킷은 인스턴스의 동일한 로컬 서버에서 가져옵니다. 동시에 두 가지를 모두 사용할 경우 IPv4 엔드포인트에서 들어오는 일부 패킷과 IPv6 엔드포인트에서 들어오는 일부 패킷이 혼합된 결과를 얻게 될 수 있습니다.
사용 중인 Linux 배포판에 따라, chrony.conf 파일을 편집하는 단계에 도달하면 Amazon Time Sync Service (fd00:ec2::123
)의 IPv4 엔드포인트(169.254.169.123
)가 아니라 IPv6 엔드포인트를 사용하게 됩니다.
server fd00:ec2::123 prefer iburst minpoll 4 maxpoll 4
파일을 저장하고 chrony
가 fd00:ec2::123
IPv6 주소를 사용하여 시간을 동기화하고 있는지 확인합니다.
[ec2-user ~]$
chronyc sources -v
출력에 fd00:ec2::123
IPv6 주소가 표시될 경우 구성이 완료된 것입니다.
Amazon Linux의 표준 시간대 변경
Amazon Linux 인스턴스는 기본적으로 UTC(협정 세계시) 표준 시간대로 설정됩니다. 인스턴스의 시간을 현지 시간이나 네트워크의 다른 표준 시간대로 변경할 수 있습니다.
중요
이 정보는 Amazon Linux에 적용됩니다. 기타 배포에 대한 자세한 내용은 해당 설명서를 참조하세요.
Amazon Linux 2023 또는 Amazon Linux 2 인스턴스의 표준 시간대를 변경하려면
-
시스템의 현재 표준 시간대 설정을 확인합니다.
[ec2-user ~]$
timedatectl
-
사용 가능한 표준 시간대를 나열합니다.
[ec2-user ~]$
timedatectl list-timezones
-
선택한 표준 시간대를 설정합니다.
[ec2-user ~]$
sudo timedatectl set-timezone
America/Vancouver
-
(선택 사항) timedatectl 명령을 다시 실행하여 현재 표준 시간대가 새 표준 시간대로 업데이트되는지 확인합니다.
[ec2-user ~]$
timedatectl
Amazon Linux 인스턴스의 표준 시간대 변경
-
인스턴스에서 사용할 표준 시간대를 식별합니다.
/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
)은 디렉터리이며, 이러한 디렉터리에는 도시별 표준 시간대 파일이 들어 있습니다. 인스턴스에 사용할 도시 또는 해당 표준 시간대에 속하는 도시를 찾습니다. -
/etc/sysconfig/clock
파일을 새 표준 시간대로 업데이트합니다. 이 예에서는 로스엔젤레스(/usr/share/zoneinfo/America/Los_Angeles
)의 표준 시간대 데이터 파일을 사용합니다.-
자주 사용하는 텍스트 편집기(
/etc/sysconfig/clock
또는 vim)로 nano 파일을 엽니다. sudo의 경우/etc/sysconfig/clock
소유이므로 편집기 명령으로root
를 사용해야 합니다.[ec2-user ~]$
sudo
nano
/etc/sysconfig/clock -
ZONE
항목을 찾아서 표준 시간대 파일로 변경합니다. 경로에서/usr/share/zoneinfo
부분은 생략하십시오. 예를 들어 로스앤젤레스 표준 시간대로 변경하려면ZONE
항목을 다음과 같이 변경합니다:ZONE="
America/Los_Angeles
"참고
UTC=true
항목을 다른 값으로 변경하지 마세요. 이 항목은 하드웨어 클록에 대한 것으로, 인스턴스에 대해 다른 표준 시간대를 설정할 때 따로 조정할 필요가 없습니다. -
파일을 저장하고 텍스트 편집기를 종료합니다.
-
-
인스턴스가 현지 시간 정보를 참조할 때 표준 시간대 파일을 찾을 수 있도록
/etc/localtime
과 표준 시간대 파일 사이에 심볼 링크를 생성합니다.[ec2-user ~]$
sudo ln -sf /usr/share/zoneinfo/
America/Los_Angeles
/etc/localtime -
시스템을 재부팅하여 모든 서비스와 애플리케이션에 새로운 표준 시간대 정보를 적용합니다.
[ec2-user ~]$
sudo reboot
-
(선택 사항) date 명령을 사용하여 현재 표준 시간대가 새 표준 시간대로 업데이트되는지 확인합니다. 현재 표준 시간대가 출력에 나타납니다. 다음 예에서 현재 표준 시간대는 로스앤젤레스 표준 시간대를 참조하는 PDT입니다.
[ec2-user ~]$
date
Sun Aug 16 05:45:16 PDT 2020
타임스탬프 비교
Amazon Time Sync Service를 사용하는 경우 Amazon EC2 인스턴스의 타임스탬프를 ClockBound와 비교하여 이벤트의 실제 시간을 결정할 수 있습니다. ClockBound는 EC2 인스턴스의 클록 정확도를 측정하고 지정된 타임스탬프가 인스턴스의 현재 클록과 관련하여 과거인지 미래인지 확인할 수 있도록 합니다. 이 정보는 각 인스턴스의 지리적 위치에 관계없이 EC2 인스턴스 전체에서 이벤트 및 트랜잭션의 순서와 일관성을 결정하는 데 유용합니다.
ClockBond는 오픈 소스 데몬과 라이브러리입니다. 설치 지침을 포함하여 ClockBound에 대한 자세한 내용은 GitHub