この記事は公開されてから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で発表されたリージョンを跨ぐような新機能・新サービスの確実な稼働にも一役買っていそうな仕組みですね!!
脚注
- ちなみに第4オクテットの123はNTPのポート番号ですw ↩