在 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,如下所示:
- 
                通过 NTP 在以下 IP 地址端点进行访问: - 
                        IPv4: 169.254.169.123
- 
                        IPv6: fd00:ec2::123(只能在基于 Nitro的实例上访问。)
 
- 
                        
- 
                (仅限 Linux)通过直接 PTP 连接连接到本地 PTP 硬件时钟进行访问: - 
                        PHC0
 
- 
                        
Amazon Linux AMI、Windows AMI 和大多数合作伙伴 AMI 都将您的实例配置为默认使用 NTP IPv4 端点。这是大多数客户工作负载的建议设置。除非您希望使用 IPv6 端点或直接连接到 PTP 硬件时钟,否则从这些 AMI 启动的实例无需进行进一步配置。
NTP 连接和 PTP 连接不需要更改任何 VPC 配置,您的实例也不需要访问互联网。
注意事项
- 对于使用本地链路地址的服务,每秒数据包数(PPS)限制为 1024 个。此限制是 Route 53 Resolver DNS 查询、实例元数据服务(IMDS)请求、Amazon Time Service 网络时间协议(NTP)请求和 Windows 许可服务(适用于基于 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 同步问题
连接到 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 端点,这样做也不会提高实例上时间的准确性。
连接到 PTP 硬件时钟
PTP 硬件时钟是 Amazon Nitro System 的一部分,因此无需使用任何客户资源即可在支持的裸机和虚拟化 EC2 实例上直接访问。
PTP 硬件时钟的 NTP 端点与常规 Amazon Time Sync Service 的端点相同。如果您的实例具有 PTP 硬件时钟并且配置了 NTP 连接(到 IPv4 或 IPv6 端点),则您的实例时间将自动通过 NTP 从 PTP 硬件时钟获取。
对于 Linux 实例,您可以配置直接 PTP 连接,这将为您提供比 NTP 连接更准确的时间。Windows 实例仅支持与 PTP 硬件时钟的 NTP 连接。
要求
当满足以下要求时,PTP 硬件时钟在实例上可用:
- 
                        支持的 Amazon Web Services 区域:美国东部(弗吉尼亚州北部)、美国东部(俄亥俄州)、亚太地区(马来西亚)、亚太地区(泰国)、亚太地区(东京)和欧洲地区(斯德哥尔摩) 
- 
                        支持的 Local Zones:美国东部(纽约市) 
- 
                        支持的实例系列: - 
                                通用型:M7a、M7g、M7i 
- 
                                内存优化型:R7a、R7g、R7i 
- 
                                存储优化型:I8g、I8ge 
 
- 
                                
- 
                        (仅限 Linux)支持的操作系统上已安装 ENA 驱动程序版本 2.10.0 或更高版本。有关支持的操作系统的更多信息,请参阅 GitHub 上的驱动程序先决条件 。 
本节介绍如何使用直接 PTP 连接通过 PTP 硬件时钟将您的 Linux 实例配置为使用本地 Amazon Time Sync Service。需要在 chrony 配置文件中添加 PTP 硬件时钟的服务器条目。
要配置到 PTP 硬件时钟的直接 PTP 链接(仅限 Linux 实例)
- 
                            安装必备组件 连接到您的 Linux 实例并执行以下操作: - 
                                    安装弹性网络适配器(ENA)版本 2.10.0 或更高版本的 Linux kernel driver。 
- 
                                    启用 PTP 硬件时钟。 
 有关安装说明,请参阅 GitHub 上的 Linux kernel driver for Elastic Network Adapter (ENA) family 。 
- 
                                    
- 
                            验证 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>其中: - 
                                    index
- 
                                    PCI slotlspci | 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 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是 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 配置 验证 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 后,您可能需要等待几秒钟才能显示星号。