Linux インスタンスの時刻の設定 - Amazon Elastic Compute Cloud

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

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

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

Amazon Time Sync Service は、VPC で実行されているすべてのインスタンスの 169.254.169.123 IPアドレスで NTP を介して利用できます。インスタンスはインターネットにアクセスする必要はなく、アクセスを許可するためにセキュリティグループルールまたはネットワーク ACL ルールを設定する必要はありません。最新バージョンの Amazon Linux 2 および Amazon Linux AMI はデフォルトで Amazon Time Sync Service と同期します。

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

Windows インスタンスの場合は、「Windows インスタンスの時刻の設定」を参照してください。

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

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

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

  4. chrony デーモン (chronyd) を再起動します。

    [ec2-user ~]$ sudo service chronyd restart
    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. 任意のテキストエディタ (例: /etc/chrony/chrony.conf または vim など) を使って nano ファイルを開きます。ファイルに既に存在する他の server ステートメントや pool ステートメントの前に次の行を追加し、変更を保存します。

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

    ubuntu:~$ sudo /etc/init.d/chrony restart
    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 をインストールします。

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

server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

この行が存在しない場合は追加します。他のサーバーまたはプールの行はすべてコメントアウトします。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 など)。そのディレクトリには、特定の都市の時間帯ファイルが含まれています。インスタンスに使用する都市 (またはお客様の時間帯と同じ都市) を見つけます。

  2. 新しいタイムゾーンを適用した /etc/sysconfig/clock ファイルを更新します。この例では、ロサンゼルスのタイムゾーンデータファイル /usr/share/zoneinfo/America/Los_Angeles を使用します。

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

      [ec2-user ~]$ sudo nano /etc/sysconfig/clock
    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
  5. (オプション) date コマンドを使用して、現在のタイムゾーンが新しいタイムゾーンに更新されていることを確認します。現在のタイムゾーンが出力に表示されます。以下の例では、現在のタイムゾーンは PDT であり、ロサンゼルスのタイムゾーンを参照しています。

    [ec2-user ~]$ date Sun Aug 16 05:45:16 PDT 2020