本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本機 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:
-
IPv4:
169.254.169.123
-
IPv6:
fd00:ec2::123
(僅在 Nitro 型執行個體上存取。)
-
-
(僅限 Linux) 透過直接 PTP 連線連接至本機 PTP 硬體時鐘:
-
PHC0
-
Amazon Linux AMIs、Windows AMIs 和大多數合作夥伴 AMI 會根據預設設定執行個體使用 NTP IPv4 端點。這是大多數客戶工作負載的建議設定。除非您要使用 IPv6 端點或直接連接到 PTP 硬體時鐘,否則從這些 AMI 啟動的執行個體不需要進一步的設定。
NTP 和 PTP 連線不需要變更任何 VPC 組態,而且執行個體不需要存取網際網路。
考量事項
使用連結本機位址的服務有每秒 1024 個封包 (PPS) 限制。此限制包括 Route 53 Resolver DNS 查詢、執行個體中繼資料服務 (IMDS) 請求、Amazon Time Service Network Time Protocol (NTP) 請求和 Windows Licensing Service (適用於 Microsoft Windows 型執行個體)
請求的彙總。 僅 Linux 執行個體可使用直接 PTP 連線連接至本機 PTP 硬體時鐘。Windows 執行個體使用 NTP 連線到本機 PTP 硬體時鐘。
連接至 Amazon Time Sync Service 的 IPv4 端點
您的 AMI 預設可能已設定 Amazon Time Sync Service。否則,請使用下列程序,將執行個體設定為透過 IPv4 端點使用本機 Amazon Time Sync Service。
如需故障診斷問題的說明,請參閱針對 Linux 執行個體上的 NTP 同步問題
AL2023 和最新版本的 Amazon Linux 2 預設為使用 Amazon Time Sync Service IPv4 端點。如果您確認執行個體已設定,您可以略過下列程序。
驗證 chrony 是否設定為使用 IPv4 端點
執行下列命令。在輸出中,開頭為 的行^*
表示偏好的時間來源。
chronyc sources -v | grep -F ^*
^* 169.254.169.123 3 4 377 14 +12us[+9653ns] +/- 290us
設定 chrony 以連線到舊版 Amazon Linux 2 上的 IPv4 端點
-
連線到您的執行個體,然後解除安裝 NTP 服務。
[ec2-user ~]$
sudo yum erase 'ntp*'
-
安裝
chrony
套裝服務。[ec2-user ~]$
sudo yum install chrony
-
使用文字編輯器 (例如
/etc/chrony.conf
或 vim) 開啟 nano 檔案。在檔案中可能存在的任何其他server
或pool
陳述式前面新增以下行,並儲存您的變更:server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
-
重新啟動
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
IPv4 端點來同步時間。[ec2-user ~]$
chronyc sources -v | grep -F ^*
在輸出中,
^*
表示偏好的時間來源。^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us
-
確認時間同步指標是否由
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
連接至 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 發行版本而定,當您到達編輯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::123
IPv6 端點來同步時間:
[ec2-user ~]$
chronyc sources -v
在輸出中,如果有看到 fd00:ec2::123
IPv6 端點,表示組態已完成。
連接至 PTP 硬體時鐘
PTP 硬體時鐘是 AWS Nitro 系統的一部分,因此可在支援的裸機和虛擬化 EC2 執行個體上直接存取,不會使用任何客戶資源。
PTP 硬體時鐘的 NTP 端點與一般 Amazon Time Sync Service 相同。如果您的執行個體具有 PTP 硬體時鐘,而且您已設定 NTP 連線 (連接 IPv4 或 IPv6 端點),執行個體時間便會自動通過 NTP 使用 PTP 硬體時鐘。
針對 Linux 執行個體,您可以設定直接 PTP 連線,這將為您提供比 NTP 連線更精準的時間。Windows 執行個體僅支援連接 PTP 硬體時鐘的 NTP 連線。
要求
符合下列需求才能在執行個體上使用 PTP 硬體時鐘:
-
支援 AWS 區域:美國東部 (維吉尼亞北部)、美國東部 (俄亥俄)、亞太區域 (馬來西亞)、亞太區域 (泰國)、亞太區域 (東京) 和歐洲 (斯德哥爾摩)
-
支援的當地區域:美國東部 (紐約市)
-
支援的執行個體系列:
-
一般用途:M7a、M7g、M7gd、M7i、M8g
-
運算最佳化:C7a、C7gd、C7i、C8g
-
記憶體最佳化:R7a, R7g, R7gd, R7i, R8g, X8g
-
儲存最佳化:I8g
-
高效能運算:Hpc7a
-
-
(僅限 Linux) 在支援的作業系統上安裝 ENA 驅動程式 2.10.0 版或更新版本。如需支援作業系統的詳細資訊,請參閱 GitHub 上的驅動程式先決條件
。
本節說明如何使用直接 PTP 連線,將 Linux 執行個體設定為透過 PTP 硬體時鐘使用本機 Amazon Time Sync Service。需將 PTP 硬體時鐘的伺服器項目新增至 chrony
組態檔。
設定 PTP 硬體時鐘的直接 PTP 連線 (僅限 Linux 執行個體)
-
安裝先決條件
連線到您的 Linux 執行個體,並執行下列動作:
-
安裝適用於彈性網路介面卡 (ENA) 2.10.0 版或更新版本的 Linux 核心驅動程式。
-
啟用 PTP 硬體時鐘。
如需安裝指示,請參閱 GitHub 上的適用於彈性網路介面卡 (ENA) 系列的 Linux 核心驅動程式
。 -
-
驗證 ENA 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>
其中:
-
是核心註冊的 PTP 硬體時鐘索引。index
-
是 ENA 乙太網路控制器 PCI 插槽。這與 中所示的槽相同PCI slot
lspci | grep ENA
。
範例輸出
/sys/class/ptp/
ptp0
: ena-ptp-05
如果
ena-ptp-
不在輸出中,表示 ENA 驅動程式未正確安裝。請參閱此程序中的步驟 1 以安裝驅動程式。<PCI slot>
-
-
設定 PTP 符號連結
PTP 裝置通常名為
/dev/ptp0
、/dev/ptp1
等,其索引取決於硬體初始化順序。建立符號連結可確保像 chrony 這樣的應用程式一致參考正確的裝置,無論索引變更為何。最新的 Amazon Linux 2023 AMIs 包含建立
/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
是 PTP 裝置的路徑。<index>
-
/dev/ptp_ena
是常數符號連結,指向相同的 PTP 裝置。
如果
/dev/ptp_ena
符號連結存在,請跳至此程序的步驟 4。如果遺失,請執行下列動作:-
新增下列
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
-
透過重新啟動執行個體或執行下列命令來重新載入
udev
規則。[ec2-user ~]$
sudo udevadm control --reload-rules && udevadm trigger
-
-
設定 chrony
chrony 必須設定為使用
/dev/ptp_ena
符號連結,而不是直接參考 /dev/ptp
。<index>
-
使用文字編輯器編輯
/etc/chrony.conf
,然後在檔案中的任何位置新增以下行。refclock PHC /dev/ptp_ena poll 0 delay 0.000010 prefer
-
重新啟動 chrony。
[ec2-user ~]$
sudo systemctl restart chronyd
-
-
驗證計時組態
確認 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 之後,可能需要等待幾秒鐘,星號才會出現。