CentOS7 on EC2 の時刻を Chrony で Amazon Time Sync Service と同期する

# はじめに
AWS から NTP サービス Amazon Time Sync Service がリリースされました。
この記事では CentOS 7 の EC2 インスタンスでの利用方法について書きます。

# Chrony とは
chrony は chrony パッケージで提供されている CentOS 7 標準の NTP クライアント/サーバの実装です。

# Amazon Time Sync Service とは
Amazon Time Sync Service は、VPC で実行されているすべてのインスタンスについて、169.254.169.123 のIPアドレスで NTP を通じて時刻同期に利用できるサービスです。

# 設定手順
ntp パッケージがインストール済みならアンインストール

```
$ yum list ntp*
$ sudo yum remove ntp*
```

chrony パッケージが入っていなければインストール

```
$ yum list chrony
$ sudo yum install chrony
```

設定ファイル( /etc/chrony.conf )を修正、169.254.169.123 を優先するように設定を追加

```
$ diff -C 5 /etc/chrony.conf.orig /etc/chrony.conf
*** 1,7 ****
--- 1,8 ----
  # Use public servers from the pool.ntp.org project.
  # Please consider joining the pool (http://www.pool.ntp.org/join.html).
+ server 169.254.169.123 prefer iburst
  server 0.centos.pool.ntp.org iburst
  server 1.centos.pool.ntp.org iburst
  server 2.centos.pool.ntp.org iburst
  server 3.centos.pool.ntp.org iburst
```

chrony サービスを起動

```
$ sudo systemctl start chronyd
```

# 同期の確認

169.254.169.123 を参照していることを確認

```
$ chronyc tracking
Reference ID    : A9FEA97B (169.254.169.123)
Stratum         : 4
Ref time (UTC)  : Sun Dec 03 09:53:05 2017
System time     : 0.000008275 seconds fast of NTP time
Last offset     : +0.000009504 seconds
RMS offset      : 0.000009557 seconds
Frequency       : 7.661 ppm slow
Residual freq   : +0.005 ppm
Skew            : 0.112 ppm
Root delay      : 0.002082497 seconds
Root dispersion : 0.000339727 seconds
Update interval : 64.7 seconds
Leap status     : Normal
```

169.254.169.123 が優先 (^*) されていることを確認

```
$ chronyc sources -v
210 Number of sources = 5

  .-- 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   377    43  +3901ns[+4528ns] +/- 1370us
^- jp.dan.me.uk                  2   6   377    43  -5827us[-5826us] +/-  168ms
^- sv1.localdomain1.com          2   6   377   109    +45us[  +36us] +/-   17ms
^- extendwings.com               2   6   357    42   -112us[ -112us] +/-  190ms
^- x.ns.gin.ntt.net              2   6   377    45   +570us[ +571us] +/-   72ms
```

参照している各ソースの誤差のレートとオフセットの推定プロセスについての情報を確認

```
$ chronyc sourcestats -v
210 Number of sources = 5
                             .- Number of sample points in measurement set.
                            /    .- Number of residual runs with same sign.
                           |    /    .- Length of measurement set (time).
                           |   |    /      .- Est. clock freq error (ppm).
                           |   |   |      /           .- Est. error in freq.
                           |   |   |     |           /         .- Est. offset.
                           |   |   |     |          |          |   On the -.
                           |   |   |     |          |          |   samples. \
                           |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
169.254.169.123             9   5   330     -0.030      0.168   -639ns    10us
jp.dan.me.uk                9   7   330     +0.464      1.558  -5684us    94us
sv1.localdomain1.com        7   4   265     -0.096      0.492    +10us    19us
extendwings.com             8   6   330     +0.376     13.316   +139us   884us
x.ns.gin.ntt.net            9   5   328     +0.288      1.723   +574us   120us
```

# 参考
- [Configuring the Amazon Time Sync Service - Amazon Elastic Compute Cloud](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#configure-amazon-time-service)