ちょっと話題の記事

【速報】マネージドNTP Amazon Time Sync Serviceが登場 #reinvent

2017.11.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。 re:Invent2017の期間中に新サービスとしてAmazon Time Sync Serviceがリリースされました。早速試してみた様子をレポートします。

Amazon Time Sync Serviceとは

Time Sync ServiceはAWSが提供するマネージドのNTP(時刻同期)サービスです。従来のEC2ではAWSが提供するNTPサーバーは無く、インターネットにあるNTP Pool ProjectのNTPサーバーを参照するのが一般的でした。 Time Sync ServiceはVPC内のリンクローカルアドレス(169.254.169.123 *1)で提供されるため、インターネットへのトラフィックなしにEC2で時刻同期を行えるようになりました。

Time Sync Serviceの設定

EC2の以下のドキュメントに従って設定します。

最新のAmazon Linux AMIのchronyパッケージでは既定でTime Sync Serviceを参照するようになっているため、ntpパッケージをchronyに置き換えるだけで利用できます。chronyについては、以下のブログ記事を参考にしてください。

$ sudo service ntpd stop
Shutting down ntpd:                                        [  OK  ]
$ sudo yum erase -y ntp*
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ntp.x86_64 0:4.2.6p5-44.34.amzn1 を 削除
---> パッケージ ntpdate.x86_64 0:4.2.6p5-44.34.amzn1 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================
 Package                    アーキテクチャー          バージョン                               リポジトリー                  容量
==================================================================================================================================
削除中:
 ntp                        x86_64                    4.2.6p5-44.34.amzn1                      installed                    1.3 M
 ntpdate                    x86_64                    4.2.6p5-44.34.amzn1                      installed                    110 k

トランザクションの要約
==================================================================================================================================
削除  2 パッケージ

インストール容量: 1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : ntp-4.2.6p5-44.34.amzn1.x86_64                                                                    1/2
  削除中                  : ntpdate-4.2.6p5-44.34.amzn1.x86_64                                                                2/2
  検証中                  : ntpdate-4.2.6p5-44.34.amzn1.x86_64                                                                1/2
  検証中                  : ntp-4.2.6p5-44.34.amzn1.x86_64                                                                    2/2

削除しました:
  ntp.x86_64 0:4.2.6p5-44.34.amzn1                              ntpdate.x86_64 0:4.2.6p5-44.34.amzn1

完了しました!
$ sudo yum install -y chrony
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ chrony.x86_64 0:3.2-1.22.amzn1 を インストール
--> 依存性の処理をしています: libseccomp.so.2()(64bit) のパッケージ: chrony-3.2-1.22.amzn1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libseccomp.x86_64 0:2.3.1-2.4.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================================
 Package                       アーキテクチャー          バージョン                         リポジトリー                     容量
==================================================================================================================================
インストール中:
 chrony                        x86_64                    3.2-1.22.amzn1                     amzn-updates                    248 k
依存性関連でのインストールをします:
 libseccomp                    x86_64                    2.3.1-2.4.amzn1                    amzn-main                        79 k

トランザクションの要約
==================================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 328 k
インストール容量: 734 k
Downloading packages:
(1/2): libseccomp-2.3.1-2.4.amzn1.x86_64.rpm                                                               |  79 kB  00:00:00
(2/2): chrony-3.2-1.22.amzn1.x86_64.rpm                                                                    | 248 kB  00:00:00
----------------------------------------------------------------------------------------------------------------------------------
合計                                                                                              799 kB/s | 328 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libseccomp-2.3.1-2.4.amzn1.x86_64                                                                 1/2
  インストール中          : chrony-3.2-1.22.amzn1.x86_64                                                                      2/2
  検証中                  : chrony-3.2-1.22.amzn1.x86_64                                                                      1/2
  検証中                  : libseccomp-2.3.1-2.4.amzn1.x86_64                                                                 2/2

インストール:
  chrony.x86_64 0:3.2-1.22.amzn1

依存性関連をインストールしました:
  libseccomp.x86_64 0:2.3.1-2.4.amzn1

完了しました!
$ cat /etc/chrony.conf
# use the local instance NTP service, if available
server 169.254.169.123 prefer iburst
  :
$

では、chronydを起動して様子を確認してみます。

$ sudo service chronyd start
Starting chronyd:                                          [  OK  ]
$ 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    35    +52us[ +300us] +/-  421us
^- four0.clover.mattnordhof>     2   6   377    34  -4907us[-4907us] +/-   89ms
^- time.rm.wtf                   2   6   377    35  +1242us[+1242us] +/-   61ms
^- resolver1.skyfiberintern>     2   6   377    34  -2578us[-2578us] +/-   50ms
^- ha82.smatwebdesign.com        2   6   377    36  -5918us[-5671us] +/-   89ms
$

同期できている様子がわかりますね!

なお、ドキュメントによると、現時点ではC5とM5インスタンスではTime Sync Serviceが未サポートとのことです。

まとめ

AWSが管理するマネージドなNTPサービス、Time Sync Serviceを紹介しました。インターネット接続なしで時刻同期ができるのは非常に嬉しいですね。 記事冒頭のAWSブログによると、AWSリージョンごとに精度の高い原子時計によるサービスともあるので、今回のre:Inventで発表されたリージョンを跨ぐような新機能・新サービスの確実な稼働にも一役買っていそうな仕組みですね!!

脚注

  1. ちなみに第4オクテットの123はNTPのポート番号ですw