Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Linux インスタンスの時刻の設定

サーバータスクとプロセスの多くには、一貫して正確な時間参照が不可欠です。システムログのほとんどにタイムスタンプが含まれています。これを利用すれば、問題が発生した時刻とイベントの発生順序を判断できます。AWS CLI、または AWS SDK を使用してインスタンスからリクエストを行う場合、これらのツールによって自動的にリクエストに署名されます。インスタンスの日時が正しく設定されていない場合、署名の日付がリクエストの日付と一致しないことがあり、その場合は AWS によってリクエストが却下されます。

Amazon は、インスタンスからアクセスできる Amazon Time Sync Service を提供しています。このサービスは、各リージョンで衛星接続された原子基準クロックを使用し、ネットワークタイムプロトコル (NTP) を通じて世界標準時 (UTC) の現在の正確な現在時刻を表示します。Amazon Time Sync Service は、UTC に追加されたうるう秒を自動的に均一化します。

Amazon Time Sync Service は、VPC で実行されているすべてのインスタンスの 169.254.169.123 IPアドレスで NTP を介して利用できます。インスタンスはインターネットにアクセスする必要はなく、アクセスを許可するためにセキュリティグループルールまたはネットワーク ACL ルールを設定する必要はありません。chrony クライアントを使用して、インスタンスに Amazon Time Sync Service を設定するには、次の手順を実行します。

または、外部 NTP ソースを使用できます。NTP やパブリックな時刻ソースの詳細については、http://www.ntp.org/ を参照してください。インスタンスは、インターネットにアクセスして外部 NTP 時刻ソースを動作させる必要があります。

Amazon Linux AMI で Amazon Time Sync Service を設定する

注記

Amazon Linux 2 では、デフォルトの chrony 設定で Amazon Time Sync Service の IP アドレスを使用するように設定されています。

Amazon Linux AMI を使用して、Amazon Time Sync Service のサーバーエントリを追加するには、chrony 設定ファイルを編集する必要があります。

Amazon Time Sync Service を使用して インスタンスを設定するには

  1. インスタンスに接続し、NTP サービスをアンインストールします。

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. chrony パッケージをインストールします。

    [ec2-user ~]$ sudo yum install chrony
  3. 任意のテキストエディタ (例: vim または nano など) を使って /etc/chrony.conf ファイルを開きます。ファイルに次の行が含まれていることを確認します:

    server 169.254.169.123 prefer iburst

    この行が存在する場合は、Amazon Time Sync Service が既に設定されており、次の手順に進むことができます。そうでない場合は、すでにファイルに存在する他の server または pool ステートメントの後に行を追加し、変更を保存します。

  4. chrony デーモン (chronyd) を開始します。

    [ec2-user ~]$ sudo service chronyd start
    Starting chronyd: [ OK ]

    注記

    RHEL と CentOS (バージョン 6 まで) では、サービス名は chrony ではなく chronyd です。

  5. chkconfig コマンドを使用して、システムがブートするたびに chronyd が起動するように設定します。

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. chrony169.254.169.123 IP アドレスを使用して時刻を同期させていることを確認します。

    [ec2-user ~]$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us ^- ec2-12-34-231-12.eu-west> 2 6 17 43 -388us[ -388us] +/- 11ms ^- tshirt.heanet.ie 1 6 17 44 +178us[ +25us] +/- 1959us ^? tbag.heanet.ie 0 6 0 - +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:c43:e312:ce77:> 0 6 0 - +0ns[ +0ns] +/- 0ns ^? 2a05:d018:dab:2701:b70:b> 0 6 0 - +0ns[ +0ns] +/- 0ns

    返される出力では、^* が優先時刻ソースを示します。

  7. 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

Ubuntu で Amazon Time Sync Service を設定する

Amazon Time Sync Service のサーバーエントリを追加するには、chrony 設定ファイルを編集する必要があります。

Amazon Time Sync Service を使用して インスタンスを設定するには

  1. インスタンスに接続し、apt を使用して chrony パッケージをインストールします。

    ubuntu:~$ sudo apt install chrony

    注記

    必要に応じて、sudo apt update を実行してインスタンスを最初に更新します。

  2. 任意のテキストエディタ (例: vim または nano など) を使って /etc/chrony/chrony.conf ファイルを開きます。ファイルに既に存在する他の server ステートメントや pool ステートメントの前に次の行を追加し、変更を保存します。

    server 169.254.169.123 prefer iburst
  3. chrony サービスを再起動します。

    ubuntu:~$ sudo /etc/init.d/chrony restart
    [ ok ] Restarting chrony (via systemctl): chrony.service.
  4. chrony169.254.169.123 IP アドレスを使用して時刻を同期させていることを確認します。

    ubuntu:~$ chronyc sources -v
    210 Number of sources = 7 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 169.254.169.123 3 6 17 12 +15us[ +57us] +/- 320us ^- tbag.heanet.ie 1 6 17 13 -3488us[-3446us] +/- 1779us ^- ec2-12-34-231-12.eu-west- 2 6 17 13 +893us[ +935us] +/- 7710us ^? 2a05:d018:c43:e312:ce77:6 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? 2a05:d018:d34:9000:d8c6:5 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? tshirt.heanet.ie 0 6 0 10y +0ns[ +0ns] +/- 0ns ^? bray.walcz.net 0 6 0 10y +0ns[ +0ns] +/- 0ns

    返される出力では、^* が優先時刻ソースを示します。

  5. chrony で報告された時刻同期メトリクスを確認します。

    ubuntu:~$ chronyc tracking
    Reference ID : 169.254.169.123 (169.254.169.123) Stratum : 4 Ref time (UTC) : Wed Nov 29 07:41:57 2017 System time : 0.000000011 seconds slow of NTP time Last offset : +0.000041659 seconds RMS offset : 0.000041659 seconds Frequency : 10.141 ppm slow Residual freq : +7.557 ppm Skew : 2.329 ppm Root delay : 0.000544 seconds Root dispersion : 0.000631 seconds Update interval : 2.0 seconds Leap status : Normal

SUSE Linux で Amazon Time Sync Service を設定する

https://software.opensuse.org/package/chrony」から Chrony をインストールします。

任意のテキストエディタ (例: vim または nano など) を使って /etc/chrony.conf ファイルを開きます。ファイルに次の行が含まれていることを確認します。

server 169.254.169.123 prefer iburst

この行が存在しない場合は追加します。他のサーバーまたはプールの行はすべてコメントアウトします。yast を開き、chrony サービスを有効にします。

Amazon Linux のタイムゾーンの変更

Amazon Linux インスタンスは、デフォルトでは UTC (協定世界時間) 時間帯に設定されていますが、インスタンスの時間を現地時間またはネットワークの別の時間帯に変更したい場合があるでしょう。

重要

これらの手順は Amazon Linux で使用するためのものです。その他のディストリビューションの詳細については、各ドキュメントを参照してください。

インスタンスの時間帯を変更するには

  1. インスタンスで使用する時間帯を特定します。/usr/share/zoneinfo ディレクトリには、タイムゾーンデータファイルの階層が含まれています。その場所でディレクトリ構造を閲覧し、お客様の時間帯のファイルを見つけます。

    [ec2-user ~]$ ls /usr/share/zoneinfo Africa Chile GB Indian Mideast posixrules US America CST6CDT GB-Eire Iran MST PRC UTC Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET Arctic EET GMT0 Israel Navajo right W-SU ...

    この場所にある一部のエントリはディレクトリです (America など)。そのディレクトリには、特定の都市の時間帯ファイルが含まれています。インスタンスに使用する都市 (またはお客様の時間帯と同じ都市) を見つけます。この例では、ロサンゼルスのタイムゾーンファイル (/usr/share/zoneinfo/America/Los_Angeles) を使用できます。

  2. 新しいタイムゾーンを適用した /etc/sysconfig/clock ファイルを更新します。

    1. お好みのテキストエディタ (vimnano など) で、/etc/sysconfig/clock ファイルを開きます。エディタのコマンドで sudo を使用する必要があります。/etc/sysconfig/clockroot が所有するためです。

    2. ZONE エントリを特定し、タイムゾーンファイルに変更します (パスの /usr/share/zoneinfo セクションは省略します)。たとえば、ロサンゼルスの時間帯に変更するには、ZONE エントリを次のように変更します。

      ZONE="America/Los_Angeles"

      注記

      UTC=true エントリを別の値に変更しないでください。このエントリは、ハードウェアクロックに使用されるため、インスタンスで別のタイムゾーンを設定する場合は調整する必要はありません。

    3. ファイルを保存し、テキストエディタを終了します。

  3. インスタンスが現地時間情報を参照するとき、タイムゾーンファイルを見つけられるように、/etc/localtime とタイムゾーンファイルの間にシンボリックリンクを作成します。

    [ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
  4. システムを再起動し、すべてのサーバーとアプリケーションで新しい時間帯情報を取得します。

    [ec2-user ~]$ sudo reboot