View a markdown version of this page

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

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

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

Amazon Time Sync Service 提供數種方法,讓您的 Amazon EC2 執行個體同步至本機時間來源。首先,任何 Amazon EC2 執行個體都可以透過網路時間通訊協定 (NTP) 連線到本機時間來源。此外,增強型 Amazon Time Sync Service 為支援的 Amazon EC2 執行個體提供更精確的本機時間來源。在具有 precision-time策略的置放群組中啟動支援的執行個體,以達到更精確的 NTP 來源。最後,在精確時間置放群組中啟動的 Linux 執行個體可存取 PTP 硬體時鐘 (PHC) 裝置,並能夠擷取硬體封包時間戳記。

任何 Amazon EC2 執行個體都可以存取本機 NTP 來源。您可以透過連結本機 IP 地址到達 NTP 來源,這會將此流量限制在您的 VPC 內,而不需要特定的 VPC 組態變更。您的 AMI 可能已將時鐘同步常駐程式設定為預設使用本機 NTP 來源。此 NTP 來源可透過下列 IP 地址使用:

支援的 Amazon EC2 執行個體可存取增強型 Amazon Time Sync Service。若要存取增強型 Amazon Time Sync Service,請使用 precision-time策略在置放群組中啟動支援的執行個體。如果您使用 NTP 連結本機 IP 地址,則不需要將執行個體設定為受益於此改進。任何作業系統都可以使用此增強功能。您可以使用您選擇的 NTP 用戶端,驗證您是否受益於增強型 NTP 來源。

在支援的執行個體系列上執行的 Linux 型 AMIs 具有從 PHC 裝置取得時間的額外選項。ENA 驅動程式讓此裝置可供使用。增強版 NTP 來源和 PHC 裝置都使用相同的高度準確時間來源。對 PHC 時間來源的存取已最佳化,因此可更準確地同步 Amazon EC2 執行個體。

考量事項

存取 Amazon Time Sync Service 的 IPv4 端點

您的 AMI 可能依預設已設定 Amazon Time Sync Service。否則,請使用下列程序,將您的執行個體設定為透過 IPv4 端點使用本機 Amazon Time Sync Service。

如需對問題進行故障診斷的協助,請參閱針對 Linux 執行個體上的 NTP 同步問題進行故障診斷,或針對 Windows 執行個體上的時間問題進行故障診斷

Amazon Linux

預設情況下,AL2023 和最新版的 Amazon Linux 2 設定為使用 Amazon Time Sync Service IPv4 端點。若您確認您的執行個體已設定,可以略過下列程序。

驗證 chrony 是否設定為使用 IPv4 端點

執行下列命令。在輸出中,以 ^* 開頭的行表示偏好的時間來源。

[ec2-user ~]$ chronyc sources -v | grep -F ^*
^* 169.254.169.123 3 4 377 13 -4325ns[-9201ns] +/- 401us
設定 chrony,以連線至舊版 Amazon Linux 2 上的 IPv4 端點
  1. 連線到您的執行個體,然後解除安裝 NTP 服務。

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

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

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  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.123 IPv4 端點來同步時間。

    [ec2-user ~]$ chronyc sources -v | grep -F ^*

    在輸出中,^* 表示偏好的時間來源。

    ^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us
  7. 確認時間同步指標是否由 chrony 回報。

    [ec2-user ~]$ chronyc tracking
    Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed May 06 00:39:14 2026 System time : 0.000002191 seconds fast of NTP time Last offset : +0.000002164 seconds RMS offset : 0.000082968 seconds Frequency : 3.710 ppm slow Residual freq : +0.002 ppm Skew : 0.504 ppm Root delay : 0.000362541 seconds Root dispersion : 0.000225028 seconds Update interval : 16.1 seconds Leap status : Normal
Ubuntu
設定 chrony,以連線至 Ubuntu 上的 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.123 IPv4 端點來同步時間。

    ubuntu:~$ chronyc sources -v | grep -F ^*

    在輸出中,以 ^* 開頭的行表示偏好的時間來源。

    ^* 169.254.169.123 3 6 17 12 +15us[ +57us] +/- 320us
  5. 確認時間同步指標是否由 chrony 回報。

    ubuntu:~$ chronyc tracking
    Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed May 06 00:39:14 2026 System time : 0.000002191 seconds fast of NTP time Last offset : +0.000002164 seconds RMS offset : 0.000082968 seconds Frequency : 3.710 ppm slow Residual freq : +0.002 ppm Skew : 0.504 ppm Root delay : 0.000362541 seconds Root dispersion : 0.000225028 seconds Update interval : 16.1 seconds Leap status : Normal
SUSE Linux

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

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

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

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

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

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

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

Windows

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

如果您使用的 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.123 IPv4 端點。

Amazon Windows AMI 的預設 NTP 設定

Amazon Machine Images (AMIs) 通常依循立即可用的預設值,但需要變更才能在 EC2 基礎設施上運作的狀況除外。下列設定已確認在虛擬化環境中運作良好,以及可將任何時鐘漂移保持在一秒的準確度內:

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

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

  • 類型 – “NTP” 表示服務將充當獨立式 NTP 用戶端,而不是充當網域的一部分。

  • Enabled 和 InputProvider:時間服務已啟用,並提供時間給作業系統。

  • 特殊輪詢間隔:每 900 秒 (15 分鐘) 檢查一次已設定的 NTP 伺服器。

    注意

    對於 Windows Server 2025 AMIs,SpecialPollInterval值為 1024 秒,而不是 900 秒。

登錄檔路徑 金鑰名稱 資料

HKLM:\System\CurrentControlSet\services\w32time\Config

UpdateInterval

120

HKLM:\System\CurrentControlSet\services\w32time\Parameters

NtpServer

169.254.169.123,0x9

HKLM:\System\CurrentControlSet\services\w32time\Parameters

類型

NTP

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

Enabled

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

InputProvider

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

SpecialPollInterval

900 (Windows Server 2016、2019 和 2022) 或 1024 (Windows Server 2025)

存取 Amazon Time Sync Service 的 IPv6 端點

本節說明如要設定執行個體以透過 IPv6 端點使用本機 Amazon Time Sync Service,步驟與 存取 Amazon Time Sync Service 的 IPv4 端點 所述有何不同。它不會說明整個 Amazon Time Sync Service 組態程序。

IPv6 端點僅在 Nitro 型執行個體上可供存取。

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

Linux

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

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

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

[ec2-user ~]$ chronyc sources -v

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

Windows

當您到達將 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::123 IPv6 端點來同步時間:

w32tm /query /configuration

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

存取增強型 Amazon Time Sync Service

增強型 Amazon Time Sync Service 為支援的 Amazon EC2 執行個體提供更準確的本機時間來源。在具有precision-time策略的置放群組中啟動的執行個體可以存取這些本機來源。對於需要更準確時間的應用程式,我們建議從連結本機 NTP 來源或 Linux 執行個體上的 PTP 硬體時鐘 (PHC) 裝置進行精確的時間置放群組。當您在精確時間置放群組中啟動執行個體時, 會將執行個體 AWS 放在支援硬體上,並直接存取 AWS 基礎設施中的高精確時間來源。

主要優點
  • 預設已改善 NTP 來源 — 如果您使用如上節所述的 NTP 連結本機 IP 地址,您的執行個體可以立即存取增強型本機 NTP 時間來源。

  • 微秒準確時鐘同步 — 將您的 Amazon EC2 Linux 執行個體設定為使用 PTP 硬體時鐘裝置,並實現微秒準確時鐘同步。

  • 簡化部署:單一置放策略可確保所有執行個體都具有精確的時間功能。

  • 硬體封包時間戳記 — 存取網路測量的低階封包時間戳記。

  • 無需額外費用 — 無需額外費用即可使用精確時間置放群組。

規則與限制
  • 精確時間置放群組適用於所有 AWS 商業區域。

  • 精確時間置放群組支援下列 Gen7 和更新版本的 Amazon EC2 執行個體系列:

    • 一般用途:M7a、M7g、M7g-flex、M7gd、M7i、M7i-flex、M8a、M8g、M8g-flex

    • 運算最佳化:C7a、C7gd、C7i、C7i-flex、C8g、C8g-flex、C8gd

    • 記憶體最佳化:R7a、R7g、R7i、R7id、R8g、X8adez、X8adz-3tb、X8adz-6tb、X8adzs、X8aedez、X8aedz-3tb、X8aedz-6tb、X8aez、X8az、X8g、X8ge

    • 儲存最佳化:I8g、I8ge

  • 如果您在精確時間置放群組中啟動或啟動執行個體,且硬體不足,無法存取增強型 Amazon Time Sync Service,則請求會失敗。

  • 如果您在精確的時間置放群組中停止執行個體,然後再次啟動它,它仍會在置放群組中執行。不過,如果沒有足夠的硬體來提供增強型 Amazon Time Sync Service 的存取權,則啟動可能會失敗。

  • Amazon EC2 會持續新增支援增強型 Amazon Time Sync Service 的硬體。如果您的請求因容量不足而失敗,請稍後重試或嘗試不同的可用區域。如需詳細資訊,請參閱對 Amazon EC2 執行個體啟動問題進行疑難排解

  • 適用置放群組的規則和限制。如需詳細資訊,請參閱Amazon EC2 執行個體的置放群組

建立精確的時間置放群組

您可以使用 AWS CLI、 AWS 管理主控台或 AWS SDKs,透過指定 precision-time策略來建立精確的時間置放群組。

使用 AWS CLI

執行以下命令:

aws ec2 create-placement-group \ --group-name my-precision-time-pg \ --strategy precision-time

命令會傳回您在建立容量保留時使用的置放群組 ARN,以及您在啟動執行個體和連結置放群組時使用的群組名稱或群組 ID。

啟動執行個體

建立精確時間置放群組之後,請在啟動執行個體以存取增強型 Amazon Time Sync Service 時指定該群組:

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type r7g.2xlarge \ --placement GroupId=pg-0aaa1111111111111

驗證對增強型 Amazon Time Sync Service 的存取

在精確的時間置放群組中啟動執行個體後,您會受益於增強的 NTP 時間來源。

例如,如果您在執行個體上使用 chronyd 協助程式,您可以驗證 NTP 時間來源現在稱為 Stratum 1,並已改善時鐘準確度指標:

[ec2-user ~]$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 1 4 377 3 +3477ns[+4689ns] +/- 91us

確認時間同步指標是否由 chrony 回報。

[ec2-user ~]$ chronyc tracking
Reference ID : A9FEA97B (169.254.169.123) Stratum : 2 Ref time (UTC) : Wed May 06 01:33:43 2026 System time : 0.000000276 seconds fast of NTP time Last offset : +0.000000331 seconds RMS offset : 0.000001929 seconds Frequency : 2.870 ppm fast Residual freq : +0.000 ppm Skew : 0.031 ppm Root delay : 0.000107584 seconds Root dispersion : 0.000036476 seconds Update interval : 16.2 seconds Leap status : Normal

存取 PTP 硬體時鐘 (PHC)

PTP 硬體時鐘 (PHC) 是 AWS Nitro 系統的一部分。其可在支援在精確時間置放群組中啟動的裸機和虛擬化 Amazon EC2 執行個體上直接存取。PHC 裝置目前只能在 Linux 執行個體上存取。下列各節說明如何在 Linux 執行個體上設定和驗證 PHC 裝置。

要求

  • 在支援的作業系統上安裝 ENA 驅動程式 2.10.0 版或更新版本。

  • 執行 Linux 的 Amazon EC2 執行個體。如需支援作業系統的詳細資訊,請參閱 GitHub 上的驅動程式先決條件

  • 在精確時間置放群組中啟動的 Amazon EC2 執行個體 (請參閱 存取增強型 Amazon Time Sync Service)。

注意

在以下區域和特定執行個體系列中,增強型 Amazon Time Sync Service 和 PHC 裝置無需精確的時間置放群組即可存取。為了獲得最佳體驗,建議您改為在精確置放群組中啟動 Amazon EC2 執行個體。

  • 支援傳統存取 AWS 區域:美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、亞太區域 (馬來西亞)、亞太區域 (泰國)、亞太區域 (東京) 和歐洲 (斯德哥爾摩)

  • 舊版存取支援的本地區域:美國東部 (紐約市)

  • 舊版存取支援的執行個體系列:

    • 一般用途:M7a、M7g、M7i

    • 記憶體最佳化:R7a、R7g、R7i

    • 儲存最佳化:I8g、I8ge

使用 PHC 支援編譯和啟用 ENA 驅動程式

請一律檢閱 GitHubENA 驅動程式文件中最新 Elastic Network Adapter (ENA) 驅動程式版本的指示,以取得您作業系統的特定資訊。以下是 Amazon Linux 步驟的概觀。

開始之前,請確定您的執行個體符合 要求

使用 PHC 支援編譯和啟用 ENA 驅動程式
  1. 安裝先決條件。

    [ec2-user ~]$ sudo yum update [ec2-user ~]$ sudo yum install kernel-devel-$(uname -r) git [ec2-user ~]$ sudo reboot
  2. 載入所需的 ptp 模組。

    [ec2-user ~]$ sudo modprobe ptp
  3. 擷取最新的 ENA 驅動程式版本 (2.10.0 版或更新版本)。

    [ec2-user ~]$ git clone https://github.com/amzn/amzn-drivers.git /tmp/amzn-drivers
  4. ena.ko 使用 PHC 支援建置 ENA 驅動程式。

    [ec2-user ~]$ cd /tmp/amzn-drivers/kernel/linux/ena [ec2-user ~]$ ENA_PHC_INCLUDE=1 make
  5. 重新載入 ENA 驅動程式並啟用 PHC 裝置。

    [ec2-user ~]$ sudo rmmod ena && sudo insmod ena.ko phc_enable=1
  6. 驗證載入的 ENA 驅動程式具有 PHC 支援。

    [ec2-user ~]$ modinfo ena | grep -E "phc_enable"
    parm: phc_enable:Enable PHC.
  7. 驗證是否已使用 ENA 驅動程式啟用 PHC 支援。

    [ec2-user ~]$ cat /sys/module/ena/parameters/phc_enable
    1

如需在重新啟動時安裝驅動程式和啟用 phc_enable 選項的說明,請參閱 GitHub 上的 ENA 驅動程式 README

驗證 PTP 裝置組態

確認 ENA PTP 硬體時鐘裝置顯示在執行個體上。

[ec2-user ~]$ for file in /sys/class/ptp/*; do echo -n "$file: "; cat "$file/clock_name"; done

預期的輸出結果

/sys/class/ptp/ptp<index>: ena-ptp-<PCI slot>

其中:

  • index 為核心註冊的 PTP 硬體時鐘索引。

  • PCI slot 為 ENA 乙太網路控制器 PCI 插槽。此插槽與 lspci | grep ENA 中顯示的插槽相同。

範例輸出

/sys/class/ptp/ptp0: ena-ptp-05

如果 ena-ptp-<PCI slot> 不在輸出中,表示 ENA 驅動程式未正確安裝。檢閱 中的步驟使用 PHC 支援編譯和啟用 ENA 驅動程式

PTP 裝置通常命名為 /dev/ptp0/dev/ptp1 等,其索引取決於硬體初始化順序。建立符號連結可確保 chrony 等應用程式能一致參考正確的裝置,不受索引變更影響。

最新的 Amazon Linux 2023 AMI 包含建立 /dev/ptp_ena 符號連結的 udev 規則,指向與 ENA 主機相關聯的正確 /dev/ptp 項目。

首先,執行下列命令,檢查符號連結是否存在。

[ec2-user ~]$ ls -l /dev/ptp*

範例輸出

crw------- 1 root root 245, 0 Jan 31 2025 /dev/ptp0 lrwxrwxrwx 1 root root 4 Jan 31 2025 /dev/ptp_ena -> ptp0

其中:

  • /dev/ptp<index> 為 PTP 裝置的路徑。

  • /dev/ptp_ena 為固定的符號連結,指向同一個 PTP 裝置。

如果/dev/ptp_ena符號連結存在,請跳至 設定 chronyd 協助程式以使用 PHC 裝置。若遺失,請執行下列動作:

建立 PTP 符號連結
  1. 新增下列 udev 規則。

    [ec2-user ~]$ echo "SUBSYSTEM==\"ptp\", ATTR{clock_name}==\"ena-ptp-*\", SYMLINK += \"ptp_ena\"" | sudo tee -a /etc/udev/rules.d/53-ec2-network-interfaces.rules
  2. 透過重新啟動執行個體或執行下列命令,重新載入 udev 規則。

    [ec2-user ~]$ sudo udevadm control --reload-rules && sudo udevadm trigger

設定 chronyd 協助程式以使用 PHC 裝置

計時時鐘同步協助程式必須設定為使用 PHC 裝置作為額外的時間來源,並使用/dev/ptp_ena符號連結來識別裝置。

設定 chronyd 協助程式以使用 PHC 裝置
  1. /etc/chrony.conf 使用文字編輯器編輯 ,並新增以下行:

    refclock PHC /dev/ptp_ena poll 0 delay 0.000010 prefer
  2. 重新啟動 chrony。

    [ec2-user ~]$ sudo systemctl restart chronyd
  3. 驗證 chrony 是否使用 PTP 硬體時鐘。PHC0 裝置必須是具有 Stratum 0 值的偏好時間來源。本機 NTP 時間來源 (如果已設定) 必須具有 Stratum 1 值。

    [ec2-user ~]$ chronyc sources
    MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* PHC0 0 0 377 0 +184ns[ +198ns] +/- 5032ns ^- 169.254.169.123 1 4 377 8 -18us[ -18us] +/- 115us

驗證硬體封包時間戳記

載入 PHC 支援的 ENA 驅動程式可讓您存取硬體封包時間戳記。您可以使用 ethtool -T interface命令來驗證對此功能的支援。

如需使用硬體封包時間戳記的詳細資訊,請參閱封包時間戳記 Linux 文件

[ec2-user ~]$ sudo ethtool -T ens5
Time stamping parameters for ens5: Capabilities: software-transmit hardware-receive software-receive software-system-clock PTP Hardware Clock: 0 Hardware Transmit Timestamp Modes: none Hardware Receive Filter Modes: none all

如果輸出hardware-receive顯示在功能清單中,則您的執行個體可以使用硬體封包時間戳記。