EC2 インスタンスのタイムリファレンスを、ローカル Amazon Time Sync Service を使用するように設定します。
Amazon Time Sync Service には、Amazon EC2 インスタンスがローカルタイムソースと同期するためのいくつかの方法が用意されています。まず、どの Amazon EC2 インスタンスも Network Time Protocol (NTP) を介してローカルタイムソースにアクセスできます。さらに、拡張 Amazon Time Sync Service は、サポートされている Amazon EC2 インスタンスに対して、より高精度のローカルタイムソースを提供します。より高精度の NTP ソースにアクセスする precision-time 戦略を使用して、プレイスメントグループでサポートされているインスタンスを起動します。最後に、高精度タイムプレイスメントグループで起動された Linux インスタンスは、PTP ハードウェアクロック (PHC) デバイスにアクセスし、ハードウェアパケットタイムスタンプを取得できます。
すべての Amazon EC2 インスタンスは、ローカル NTP ソースにアクセスできます。リンクローカル IP アドレスを介して NTP ソースにアクセスできます。これにより、特定の VPC 設定を変更することなく、このトラフィックをお使いの VPC 内に制限できます。AMI は、デフォルトでローカル NTP ソースを使用するようにクロック同期デーモンを設定済みである可能性があります。この NTP ソースは、次の IP アドレスで使用できます。
-
IPv4:
169.254.169.123 -
IPv6:
fd00:ec2::123(Nitro ベースのインスタンスでのみアクセス可能。)
サポートされている Amazon EC2 インスタンスは、拡張 Amazon Time Sync Service にアクセスできます。拡張 Amazon Time Sync Service にアクセスするには、precision-time 戦略を使用してプレイスメントグループでサポートされているインスタンスを起動します。NTP リンクローカル IP アドレスを使用する場合、拡張機能のメリットを享受するためにインスタンスを設定する必要はありません。どのオペレーティングシステムでもこの拡張機能を使用できます。選択した NTP クライアントを使用して、拡張 NTP ソースのメリットを享受できているかどうかを確認できます。
サポートされているインスタンスファミリーで実行される Linux ベースの AMI には、PHC デバイスからタイムソースを取得する追加オプションがあります。ENA ドライバーはこのデバイスを使用可能にします。拡張 NTP ソースと PHC デバイスの両方が、同じ高精度のタイムソースを使用します。これにより、PHC タイムソースへのアクセスが最適化され、Amazon EC2 インスタンスをより正確に同期できます。
考慮事項
NTP タイムソースは UTC タイムスケールの Leap Smearing (うるう秒の調整) ビューを提供しますが、PHC はうるう秒の調整を行いません。詳細については、「うるう秒」を参照してください。
Linux インスタンスのみがローカル PTP ハードウェアクロックにアクセスできます。Windows インスタンスが拡張 Amazon Time Sync Service にアクセスするには、 NTP を使用する必要があります。
リンクローカルアドレスを使用するサービスには 1,024 パケット/秒 (PPS) の制限があります。この制限には、Route 53 Resolver DNS クエリ、インスタンスメタデータサービス (IMDS) リクエスト、Amazon Time Sync Service Network Time Protocol (NTP) リクエスト、および Windows Licensing Service (Microsoft Windows ベースのインスタンス向け)
リクエストの総計が含まれます。
内容
Amazon Time Sync Service の IPv4 エンドポイントにアクセスする
AMI では、Amazon Time Sync Service がデフォルトですでに設定されている可能性があります。それ以外の場合は、次の手順に従って、IPv4 エンドポイントを介してローカル Amazon Time Sync Service を使用するようにインスタンスを設定します。
問題のトラブルシューティングについては、「Amazon EC2 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 の両方のエンドポイントを設定する必要はなく、そうしてもインスタンスの時刻の精度は向上しません。
拡張 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 SDK を使用して precision-time 戦略を指定することで、高精度タイムプレイスメントグループを作成できます。
AWS CLI を使用する
次のコマンドを実行します。
aws ec2 create-placement-group \ --group-namemy-precision-time-pg\ --strategy precision-time
コマンドは、キャパシティ予約の作成時に使用するプレイスメントグループ ARN と、インスタンスの起動時およびプレイスメントグループのリンク時に使用するグループ名またはグループ ID を返します。
インスタンスの起動
高精度タイムプレイスメントグループを作成したら、インスタンスを起動するときにそのグループを指定して、拡張 Amazon Time Sync Service にアクセスします。
aws ec2 run-instances \ --image-idami-0abcdef1234567890\ --instance-typer7g.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 System の一部です。高精度タイムプレイスメントグループで起動された、サポートされているベアメタルおよび仮想化された 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 ドライバーをコンパイルして有効にする
お使いのオペレーティングシステム固有の情報については、GitHub の「ENA ドライバードキュメント
開始する前に、インスタンスが 要件 を満たしていることを確認してください。
PHC サポート付きで ENA ドライバーをコンパイルして有効にするには
-
インストール条件
[ec2-user ~]$sudo yum update[ec2-user ~]$sudo yum install kernel-devel-$(uname -r) git[ec2-user ~]$sudo reboot -
必要な ptp モジュールをロードします。
[ec2-user ~]$sudo modprobe ptp -
最新の ENA ドライバーバージョン (バージョン 2.10.0 以降) を取得します。
[ec2-user ~]$git clone https://github.com/amzn/amzn-drivers.git /tmp/amzn-drivers -
PHC サポート付きで ENA ドライバー
ena.koを構築します。[ec2-user ~]$cd /tmp/amzn-drivers/kernel/linux/ena[ec2-user ~]$ENA_PHC_INCLUDE=1 make -
ENA ドライバーを再ロードし、PHC デバイスを有効にします。
[ec2-user ~]$sudo rmmod ena && sudo insmod ena.ko phc_enable=1 -
ロードされた ENA ドライバーが PHC をサポートしていることを確認します。
[ec2-user ~]$modinfo ena | grep -E "phc_enable"parm: phc_enable:Enable PHC. -
ENA ドライバーで PHC サポートが有効になっていることを確認します。
[ec2-user ~]$cat /sys/module/ena/parameters/phc_enable1
ドライバーをインストールし、再起動時に 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>
説明は以下のとおりです。
-
は、カーネルに登録されている PTP ハードウェアクロックインデックスです。index -
は ENA イーサネットコントローラー PCI スロットです。これは、「PCI slotlspci | grep ENA」に示されているのと同じスロットです。
出力の例
/sys/class/ptp/ptp0: ena-ptp-05
出力に ena-ptp- が表示されない場合はENA ドライバーが正しくインストールされていません。PHC サポート付きで ENA ドライバーをコンパイルして有効にする のステップを確認します。<PCI slot>
PTP シンボリックリンクを設定する
PTP デバイスの名前は通常 /dev/ptp0 や /dev/ptp1 などで、ハードウェアの初期化順序に応じてインデックスが付けられます。シンボリックリンクを作成することで、chrony などのアプリケーションは、インデックスの変更に関係なく、常に正しいデバイスを参照できます。
最新の Amazon Linux 2023 AMI には、ENA ホストに関連付けられた正しい /dev/ptp エントリを指す /dev/ptp_ena シンボリックリンクを作成する udev ルールが含まれています。
まず、次のコマンドを実行して、シンボリックリンクが存在するかどうかをチェックします。
[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 シンボリックリンクが存在する場合は、「PHC デバイスを使用するように chronyd デーモンを設定する」に進みます。シンボリックリンクが欠落している場合は、以下を実行します。
PTP シンボリックリンクを作成するには
-
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 && sudo udevadm trigger
PHC デバイスを使用するように chronyd デーモンを設定する
chronyd クロック同期デーモンは、PHC デバイスを、/dev/ptp_ena シンボリックリンクを使用してデバイスを識別する追加のタイムソースとして使用するように設定する必要があります。
PHC デバイスを使用するように chronyd デーモンを設定するには
-
テキストエディタを使用して
/etc/chrony.confを編集し、次の行を追加します。refclock PHC /dev/ptp_ena poll 0 delay 0.000010 prefer -
chrony を再起動します。
[ec2-user ~]$sudo systemctl restart chronyd -
chrony が PTP ハードウェアクロックを使用していることを確認します。PHC0 デバイスは、Stratum 0 値を持つ優先タイムソースである必要があります。ローカル NTP タイムソース (設定されている場合) には、Stratum 1 値が必要です。
[ec2-user ~]$chronyc sourcesMS 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 -Tens5
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 に表示されている場合、ハードウェアパケットタイムスタンプはお使いのインスタンスで使用できます。