EC2 インスタンスのタイムリファレンスを、ローカル Amazon Time Sync Service を使用するように設定します。
ローカル Amazon Time Sync Service は、Network Time Protocol (NTP) を使用するか、サポートされているインスタンスのローカル Precision Time Protocol (PTP) ハードウェアクロックを提供します。PTP ハードウェアクロックは、NTP 接続 (Linux および Windows インスタンス) またはダイレクト PTP 接続 (Linux インスタンスのみ) のいずれかをサポートします。NTP 接続と直接 PTP 接続は非常に正確な同じ時刻を元にしていますが、直接 PTP 接続の方が NTP 接続より正確です。Amazon Time Sync Service への NTP 接続は Leap Smearing (うるう秒の調整) をサポートしていますが、PTP ハードウェアクロックへの PTP 接続は Leap Smearing を行いません。詳細については、「うるう秒」を参照してください。
インスタンスは次のようにローカル Amazon Time Sync Service にアクセスできます。
-
以下の IP アドレスエンドポイントの NTP 経由。
-
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 の設定を変更する必要はなく、インスタンスはインターネットにアクセスする必要もありません。
注記
リンクローカルアドレスを使用するサービスには 1,024 パケット/秒 (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 エンドポイントに接続する
このセクションでは、IPv4 エンドポイントを通じてローカル Amazon Time Sync Service を使用するようにインスタンスを設定する方法について説明します。
インスタンスのオペレーティングシステムの説明を使用してください。
AL2023、および最新バージョンの Amazon Linux 2 と Amazon Linux AMI はデフォルトで Amazon Time Sync Service の IPv4 エンドポイントを使用するように設定されています。これらの AMI から起動されるインスタンスにはこれ以上の設定は不要で、以下の手順はスキップできます。
Amazon Time Sync Service がデフォルトで設定されていない AMI を使用している場合は、次の手順のいずれかを使用して、chrony
クライアントを使用してインスタンスに Amazon Time Sync Service を設定します。Amazon Time Sync Service のサーバーエントリを chrony
設定ファイルに追加する必要があります。
インスタンスのオペレーティングシステムの説明を使用してください。
2018 年 8 月のリリースから、Windows AMI はデフォルトで Amazon Time Sync Service を使用します。これらの AMI から起動されるインスタンスにはこれ以上の設定は不要で、以下の手順はスキップできます。
Amazon Time Sync Service がデフォルトで設定されていない AMI を使用している場合は、まず現在の NTP 設定を確認します。インスタンスが既に Amazon Time Sync Service の IPv4 エンドポイントを使用している場合は、それ以上設定する必要はありません。インスタンスが Amazon Time Sync Service を使用していない場合は、Amazon Time Sync Service を使用するように NTP サーバーを変更する手順を完了してください。
NTP 設定を確認するには
-
インスタンスで、コマンドプロンプトウィンドウを開きます。
-
次のコマンドを入力して、現在の NTP 設定を取得します。
w32tm /query /configuration
このコマンドは、Windows インスタンスの現在の設定を返し、Amazon Time Sync Service に接続しているかどうかを表示します。
-
(オプション) 次のコマンドを入力して、現在の設定のステータスを取得します。
w32tm /query /status
このコマンドは、インスタンスと NTP サーバーを同期した最終時刻やポーリング間隔などの情報を返します。
NTP サーバーが Amazon Time Sync Service を使用するよう変更するには
-
コマンドプロンプトウィンドウで、次のコマンドを実行します。
w32tm /config /manualpeerlist:169.254.169.123 /syncfromflags:manual /update
-
次のコマンドを使用して新しい設定を確認します。
w32tm /query /configuration
返される出力で、
NtpServer
が169.254.169.123
IPv4 エンドポイントを表示することを確認します。
Amazon Windows AMI のデフォルト Network Time Protocol (NTP) 設定
Amazon Machine Image (AMI) は一般的に、EC2 インフラストラクチャで機能させるために変更が必要な場合を除き、初期状態のデフォルトに準拠しています。以下の設定は、仮想化環境で適切に動作するとともに、クロック同期ずれを 1 秒以内の精度に保持するように定められています。
-
更新間隔 — タイムサービスがシステム時刻を正しくなるように調整する頻度を管理します。AWS は、更新間隔を 2 分に 1 回になるように設定します。
-
NTP サーバー — 2018 年 8 月のリリースから、AMI はデフォルトで Amazon Time Sync Service を使用することになりました。このタイムサービスは、169.254.169.123 IPv4 エンドポイントにあるすべての AWS リージョン からアクセス可能です。さらに 0x9 フラグは、タイムサービスがクライアントとして機能しており、設定されたタイムサーバーを確認する頻度を
SpecialPollInterval
を使用して決定することを示しています。 -
タイプ – 「NTP」とは、サービスがドメインの一部としてではなく、スタンドアロン NTP クライアントとして機能することを意味します。
-
Enabled および InputProvider – タイムサービスが有効で、オペレーティングシステムに時刻が提供されます。
-
特別なポーリング間隔 – 設定された NTP サーバーを 900 秒 (15 分) ごとに確認します。
レジストリパス | キー名 | データ |
---|---|---|
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 |
有効 |
1 |
HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient |
InputProvider |
1 |
HKLM:\System\CurrentControlSet\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 および IPv6 NTP パケットは、インスタンスの同じローカルサーバーから取得されます。IPv4 と IPv6 の両方のエンドポイントを設定する必要はなく、そうしてもインスタンスの時刻の精度は向上しません。
インスタンスのオペレーティングシステムの説明を使用してください。
使用している Linux ディストリビューションに応じて、chrony.conf ファイルを編集するステップに到達すると、IPv4 エンドポイント (169.254.169.123
) ではなく、Amazon Time Sync Service の IPv6 エンドポイント (fd00:ec2::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 エンドポイントが表示されているのを確認したら、設定は完了しています。
Amazon Time Sync Service を使用するように NTP サーバーを変更するステップに到達すると、IPv4 エンドポイント (169.254.169.123
) ではなく、Amazon Time Sync Service の IPv6 エンドポイント (fd00:ec2::123
) を使用することになります。
w32tm /config /manualpeerlist:fd00:ec2::123 /syncfromflags:manual /update
新しい設定で fd00:ec2::123
IPv6 エンドポイントが使用されて時刻が同期されていることを確認します。
w32tm /query /configuration
出力で、NtpServer
に fd00:ec2::123
IPv6 エンドポイントが表示されることを確認します。
PTP ハードウェアクロックに接続する
PTP ハードウェアクロックは AWS Nitro System の一部であるため、サポート対象のベアメタルインスタンスや仮想化 EC2 インスタンスでは、顧客のリソースを使用せずに直接アクセスできます。
PTP ハードウェアクロックの NTP エンドポイントは、通常の Amazon Time Sync Service のものと同じです。インスタンスに PTP ハードウェアクロックがあり、(IPv4 または IPv6 エンドポイントへの) NTP 接続を設定した場合、インスタンス時間は 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
-
-
(Linux のみ) ENA ドライバーバージョン 2.10.0 以降がサポートされているオペレーティングシステムにインストールされています。サポート対象のオペレーティングシステムの詳細については、GitHub でドライバーの「前提条件
」を参照してください。
このセクションでは、直接 PTP 接続による PTP ハードウェアクロックを通じてローカル Amazon Time Sync Service を使用するように Linux インスタンスを設定する方法について説明します。このためには、PTP ハードウェアクロックのサーバーエントリを chrony
設定ファイルに追加する必要があります。
PTP ハードウェアクロックへの直接 PTP 接続を設定するには (Linux インスタンスのみ)
-
Linux インスタンスに接続し、以下を実行します。
-
Elastic Network Adapter (ENA) バージョン 2.10.0 以降の Linux カーネルドライバーをインストールします。
-
PTP ハードウェアクロックを有効にします。
インストール手順については、GitHub で「Elastic Network Adapter (ENA) ファミリー用の Linux カーネルドライバー
」を参照してください。 -
-
インスタンスに
/dev/ptp0
デバイスが表示されることを確認します。[ec2-user ~]$
ls /dev/ptp0
予想される出力は次のようになります。出力に
/dev/ptp0
が表示されない場合は、ENA ドライバーが正しくインストールされていません。この手順のステップ 1 を確認して、ドライバーをインストールしてください。/dev/ptp0
-
テキストエディタを使用して
/etc/chrony.conf
を編集し、次の行をファイルの任意の場所に追加します。refclock PHC /dev/ptp0 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 を再起動した後、アスタリスクが表示されるまで数秒かかる場合があります。