將EC2執行個體上的時間參考設定為使用本機 Amazon Time Sync Service - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將EC2執行個體上的時間參考設定為使用本機 Amazon Time Sync Service

本機 Amazon Time Sync Service 會使用網路時間通訊協定 (NTP),或在支援的執行個體 上提供本機精確時間通訊協定 (PTP) 硬體時鐘。PTP 硬體時鐘支援NTP連線 (Linux 和 Windows 執行個體) 或直接PTP連線 (僅限 Linux 執行個體)。NTP 和 直接PTP連線使用相同的高度準確的時間來源,但直接PTP連線比NTP連線更準確。與 Amazon Time Sync Service 的NTP連線支援閏片塗片,而與PTP硬體時鐘的PTP連線則不會塗片時間。如需詳細資訊,請參閱閏秒

您的執行個體可以存取本機 Amazon Time Sync Service,如下所示:

  • 透過下列 IP NTP 地址端點:

  • (僅限 Linux) 透過直接PTP連線連線至本機PTP硬體時鐘:

    • PHC0

Amazon Linux AMIs、Windows AMIs和大多數合作夥伴都會將您的執行個體AMIs設定為預設使用NTPIPv4端點。這是大多數客戶工作負載的建議設定。從這些執行個體啟動不需要進一步的組態,AMIs除非您想要使用IPv6端點或直接連線至PTP硬體時鐘。

NTP 和 PTP 連線不需要任何VPC組態變更,且執行個體不需要存取網際網路。

注意

連線至 Amazon Time Sync Service 的IPv4端點

本節說明如何將執行個體設定為透過IPv4端點使用本機 Amazon Time Sync Service。

請遵循於執行個體作業系統的指示。

AL2Amazon Linux 2 和 Amazon Linux 的 023 和最新版本AMIs已設定為預設使用 Amazon Time Sync Service IPv4端點。從這些執行個體啟動的執行個體不需要進一步的組態AMIs,您可以略過下列程序。

如果您使用的 AMI未預設設定 Amazon Time Sync Service,請使用下列其中一個程序,使用chrony用戶端在您的執行個體上設定 Amazon Time Sync Service。須編輯 chrony 組態檔,新增 Amazon Time Sync Service 的伺服器項目。

請遵循於執行個體作業系統的指示。

Amazon Linux
使用 chrony 連線至 Amazon Linux 上的 Amazon Time Sync Service IPv4端點
  1. 連線至您的執行個體並解除安裝 NTP服務。

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. 安裝 chrony 套裝服務。

    [ec2-user ~]$ sudo yum install chrony
  3. 使用文字編輯器 (例如 /etc/chrony.confvim) 開啟 nano 檔案。確認檔案是否包含下列程式碼行:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    如果行存在,則 Amazon Time Sync Service 已設定為使用 Amazon Time Sync Service 的IPv4端點,您可以前往下一個步驟。如果沒有,請將該行程式碼新增在檔案中已有之任何其他 serverpool 陳述式之後,然後儲存您的變更。

  4. 重新啟動 chrony 協助程式 (chronyd)。

    [ec2-user ~]$ sudo service chronyd restart
    Starting chronyd: [ OK ]
    注意

    在 RHEL和 CentOS 上 (截至第 6 版),服務名稱chrony不是 chronyd

  5. 使用 chkconfig 命令設定 chronyd 在每次系統開機時啟動。

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. 確認 chrony 正在使用169.254.169.123IPv4端點來同步時間。

    [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
使用 chrony 連線至 Ubuntu 上的 Amazon Time Sync Service IPv4端點
  1. 連線至您的執行個體,然後使用 apt 來安裝 chrony 套件。

    ubuntu:~$ sudo apt install chrony
    注意

    如有必要,請執行 sudo apt update 先更新您的執行個體。

  2. 使用文字編輯器 (例如 /etc/chrony/chrony.confvim) 開啟 nano 檔案。將下列程式碼新增在檔案中已有之任何其他 serverpool 的陳述式之前,然後儲存您的變更:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  3. 重新啟動 chrony 服務。

    ubuntu:~$ sudo /etc/init.d/chrony restart
    Restarting chrony (via systemctl): chrony.service.
  4. 確認 chrony 正在使用169.254.169.123IPv4端點來同步時間。

    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

從 SUSE Linux Enterprise Server 15 開始, chrony是 的預設實作NTP。

使用 chrony 連線至 SUSE Linux 上的 Amazon Time Sync Service IPv4端點
  1. 使用文字編輯器 (例如 /etc/chrony.confvim) 開啟 nano 檔案。

  2. 確認檔案是否包含下列程式碼行:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    如果此程式碼不存在,請新增它。

  3. 將任何其他伺服器或集區的程式碼行變更為註解。

  4. 開啟 yast 並啟用 chrony 服務。

從 2018 年 8 月版本開始,Windows 預設AMIs會使用 Amazon Time Sync Service。從這些執行個體啟動的執行個體不需要進一步的組態AMIs,您可以略過下列程序。

如果您使用的 AMI未依預設設定 Amazon Time Sync Service,請先驗證您目前的NTP組態。如果您的執行個體已使用 Amazon Time Sync Service 的IPv4端點,則不需要進一步的組態。如果您的執行個體未使用 Amazon Time Sync Service,請完成程序,將NTP伺服器變更為使用 Amazon Time Sync Service。

驗證NTP組態
  1. 從執行個體中,開啟命令提示視窗。

  2. 輸入下列命令以取得目前的NTP組態:

    w32tm /query /configuration

    此命令會傳回 Windows 執行個體目前的組態設定,並顯示是否已連接至 Amazon Time Sync Service。

  3. (選用) 輸入下列命令,以取得目前組態的狀態:

    w32tm /query /status

    此命令會傳回資訊,例如執行個體上次與NTP伺服器同步的時間,以及輪詢間隔。

若要變更NTP伺服器以使用 Amazon Time Sync Service
  1. 從命令提示視窗,執行下列命令:

    w32tm /config /manualpeerlist:169.254.169.123 /syncfromflags:manual /update
  2. 使用下列命令,確認新設定:

    w32tm /query /configuration

    在傳回的輸出中,確認 NtpServer 顯示169.254.169.123IPv4端點。

Amazon Windows 的預設網路時間通訊協定 (NTP) 設定 AMIs

Amazon Machine Images (AMIs) 通常會遵守預設值, out-of-the-box除非在EC2基礎設施上需要變更才能運作。下列設定已確認在虛擬化環境中運作良好,以及可將任何時鐘漂移保持在一秒的準確度內:

  • 更新間隔 – 規範時間服務將系統時間調整為準確性的頻率。將更新間隔 AWS 設定為每兩分鐘進行一次。

  • NTP 伺服器 – 從 2018 年 8 月版本開始,預設AMIs使用 Amazon Time Sync Service。這次的服務可從 AWS 區域 169.254.169.123 IPv4端點的任何 存取。此外,0x9 標記表示時間服務正作為用戶端,並使用 SpecialPollInterval 來判定以設定的時間伺服器進行查入的頻率。

  • Type – "NTP" 表示服務作為獨立NTP用戶端,而不是作為網域的一部分。

  • 已啟用 和 InputProvider – 時間服務已啟用,並為作業系統提供時間。

  • 特殊輪詢間隔 – 每 900 秒 (15 分鐘) 針對設定的NTP伺服器進行檢查。

登錄檔路徑 金鑰名稱 資料

HKLM:\SystemCurrentControlSet\services\w32time\Config

UpdateInterval

120

HKLM:\SystemCurrentControlSet\services\w32time\Parameters

NtpServer

169.254.169.123,0x9

HKLM:\SystemCurrentControlSet\services\w32time\Parameters

Type

NTP

HKLM:\SystemCurrentControlSet\services\w32time\TimeProviders\NtpClient

已啟用

1

HKLM:\SystemCurrentControlSet\services\w32time\TimeProviders\NtpClient

InputProvider

1

HKLM:\SystemCurrentControlSet\services\w32time\TimeProviders\NtpClient

SpecialPollInterval

900

連線至 Amazon Time Sync Service 的IPv6端點

本節說明如果您透過IPv6端點將執行個體設定為使用本機 Amazon Time Sync Service, 中所述的步驟會有何連線至 Amazon Time Sync Service 的IPv4端點不同。它不會說明整個 Amazon Time Sync Service 組態程序。

IPv6 端點只能在 Nitro 型執行個體 上存取。

注意

我們不建議同時使用 IPv4和 IPv6 端點項目。IPv4 和 IPv6NTP封包來自與執行個體相同的本機伺服器。設定 IPv4和 IPv6 端點是不必要的,而且不會改善執行個體的時間準確性。

請遵循於執行個體作業系統的指示。

根據您正在使用的 Linux 分佈,當您到達編輯 chrony.conf 檔案的步驟時,您將使用 Amazon Time Sync Service (fd00:ec2::123) 的IPv6端點,而不是IPv4端點 ()169.254.169.123

server fd00:ec2::123 prefer iburst minpoll 4 maxpoll 4

儲存 檔案,並確認 chrony 正在使用fd00:ec2::123IPv6端點來同步時間:

[ec2-user ~]$ chronyc sources -v

在輸出中,如果您看到fd00:ec2::123IPv6端點,則組態已完成。

當您達到將NTP伺服器變更為使用 Amazon Time Sync Service 的步驟時,您會使用 Amazon Time Sync Service (fd00:ec2::123) 的IPv6端點,而不是IPv4端點 ()169.254.169.123

w32tm /config /manualpeerlist:fd00:ec2::123 /syncfromflags:manual /update

確認您的新設定正在使用fd00:ec2::123IPv6端點來同步時間:

w32tm /query /configuration

在輸出中,驗證 NtpServer 顯示fd00:ec2::123IPv6端點。

連線至PTP硬體時鐘

PTP 硬體時鐘是 AWS Nitro System 的一部分,因此可在支援的裸機和虛擬化EC2執行個體上直接存取,而無需使用任何客戶資源。

PTP 硬體時鐘的NTP端點與一般 Amazon Time Sync Service 的端點相同。如果您的執行個體具有PTP硬體時鐘,且您設定了NTP連線 (至 IPv4或 IPv6 端點),則執行個體時間會透過 自動從PTP硬體時鐘取得NTP。

對於 Linux 執行個體,您可以設定直接PTP連線,這將為您提供比NTP連線更準確的時間。Windows 執行個體僅支援與PTP硬體時鐘的NTP連線。

要求

當符合下列需求時,執行個體上可以使用PTP硬體時鐘:

  • 支援 AWS 區域:美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、亞太區域 (馬來西亞) 和亞太區域 (東京)

  • 支援的執行個體系列:

    • 一般用途:M7a, M7g, M7gd, M7i

    • 運算最佳化:C7a, C7gd, C7i

    • 記憶體最佳化:R7a, R7g, R7gd, R7i, R8g

  • (僅限 Linux) ENA驅動程式 2.10.0 版或更新版本安裝在支援的作業系統上。如需支援作業系統的詳細資訊,請參閱 上的驅動程式先決條件GitHub

本節說明如何設定 Linux 執行個體,透過PTP硬體時鐘使用直接PTP連線來使用本機 Amazon Time Sync Service。它需要為chrony組態檔案中的PTP硬體時鐘新增伺服器項目。

設定與PTP硬體時鐘的直接PTP連線 (僅限 Linux 執行個體)
  1. 連線至 Linux 執行個體並執行下列動作:

    1. 安裝 Elastic Network Adapter (ENA) 2.10.0 版或更新版本的 Linux 核心驅動程式。

    2. 啟用PTP硬體時鐘。

    如需安裝指示,請參閱 上的 Elastic Network Adapter (ENA) 系列 Linux 核心驅動程式GitHub

  2. 確認 /dev/ptp0 裝置顯示在執行個體上。

    [ec2-user ~]$ ls /dev/ptp0

    預期的輸出如下:如果 /dev/ptp0不在輸出中,ENA則驅動程式未正確安裝。請參閱此程序中的步驟 1 以安裝驅動程式。

    /dev/ptp0
  3. 使用文字編輯器編輯 /etc/chrony.conf,然後在檔案中的任何位置新增以下行。

    refclock PHC /dev/ptp0 poll 0 delay 0.000010 prefer
  4. 重新啟動計時。

    [ec2-user ~]$ sudo systemctl restart chronyd
  5. 確認 chrony 正在使用PTP硬體時鐘來同步此執行個體上的時間。

    [ec2-user ~]$ chronyc sources

    預期的輸出結果

    MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* PHC0 0 0 377 1 +2ns[ +1ns] +/- 5031ns

    在傳回的輸出中, *會指示偏好的時間來源。 PHC0會對應至PTP硬體時鐘。重新啟動 chrony 之後,可能需要等待幾秒鐘,星號才會出現。