VMware Cloud on AWS上の仮想マシンからAmazon Time Sync Serviceを利用する

# はじめに
<!-- 発端や概要を記載 -->
AWS では Amazon Time Sync Service という NTP サービスを追加料金を支払う事なく利用できます。VMware Cloud on AWS（VMC）においても、この Amazon Time Sync Service を追加料金なしで利用できる事をご存知でしたでしょうか？
今回は Amazon Time Sync Service の概要説明と、VMware Cloud on AWS 上の仮想マシンからの利用方法について解説してみます。


# 目次
<!-- タイトルとアンカー名を編集 -->
1. [Amazon Time Sync Service とは](#amazon-time-sync-service-とは)
1. [VMC における Amazon Time Sync Service の利用](#vmc-における-amazon-time-sync-service-の利用)
    1. [コンピュートゲートウェイにファイアウォールルールの追加](#コンピュートゲートウェイにファイアウォールルールの追加)
    1. [各仮想マシンから NTP サーバーとして Amazon Time Sync Service を指定](#各仮想マシンから-ntp-サーバーとして-amazon-time-sync-service-を指定)
1. [まとめ](#まとめ)
1. [参考文献](#参考文献)
1. [関連記事](#関連記事)

<!-- 各チャプター -->
# Amazon Time Sync Service とは

Amazon Time Sync Service は AWS が提供するマネージドの NTP サービスで追加料金なしで、かつインターネットアクセスが必要なくアクセスできます。

> NTPで配信される時刻同期サービスで、各リージョンで冗長化している衛星接続の原子時計を使って高精度な時刻参照を提供します。このサービスは追加料金なくすぐに全リージョンのVPCの稼働中の全インスタンスで利用できます。
このサービスには 169.254.169.123 のリンクローカル IP アドレスを介してアクセスできます。つまり外部のインターネットアクセスする必要なく、プライベートサブネット内から安全にアクセスできます。
> *From [AWS ブログ: Amazon Time Sync Service で時間を維持する](https://aws.amazon.com/jp/blogs/news/keeping-time-with-amazon-time-sync-service/)*

# VMC における Amazon Time Sync Service の利用

VMware Cloud on AWS の SDDC は AWS のリージョンの VPC 内で展開されますので、同じく Amazon Time Sync Service が追加料金なしで、かつインターネットアクセスが必要なくアクセスできます！

利用方法としては、大きく分けて 2つのステップのみです:
1. [コンピュートゲートウェイにファイアウォールルールの追加](#コンピュートゲートウェイにファイアウォールルールの追加)
1. [各仮想マシンから NTP サーバーとして **169.254.169.123** を指定](#各仮想マシンから-ntp-サーバーとして-amazon-time-sync-service-を指定)

以降で VMware Cloud on AWS 上の Linux VM から Amazon Time Sync Service を使って実際に時刻同期をしてみます。


## コンピュートゲートウェイにファイアウォールルールの追加
以下のように仮想マシン、または仮想マシンが所属するセグメントから 169.254.169.123 に対して NTP を許可するルールを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/275c1307-8677-c120-0195-cca0b4377a79.png)

| 項目 | 値 |
| --- | --- |
| 名前 | 任意の名前で OK  |
| 送信元 | 特定の仮想マシン、または仮想マシンが所属する IP アドレスレンジを指定（グループを事前に作成して指定） <br> ※今回は SDDC Compute Networks というグループを作成し、その中に仮想マシン用の論理ネットワークのセグメントで使用している IP アドレスレンジを含めています。  |
| 宛先 | **169.254.169.123**（グループを事前に作成して指定） <br> ※今回は Amazon Time Sync Service というグループを作成し、その中に 169.254.169.123 のみをメンバーとして指定しています。  |
| サービス | **NTP**  |
| 適用先| Internet Interface または Direct Connect Interface（デフォルトゲートウェイが参照しているインターフェイスを指定）  |
| アクション | **許可**  |


## 各仮想マシンから NTP サーバーとして Amazon Time Sync Service を指定
今回は SDDC 上の Linux VM（CentOS）にて NTP の設定を行ってみます。

- chrony の導入を行います。
```text
sudo yum erase ntp*
sudo yum -y install chrony
```
- chrony の設定ファイルに 169.254.169.123 を追加します。
```conf:/etc/chrony.conf
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
```
- chrony デーモンの再起動とシステム起動時にchronyd が起動するように設定します。
```text
sudo service chronyd restart
sudo chkconfig chronyd on
```

設定後以下の通り、chrony が 169.254.169.123 を使用して時刻を同期できている事が確認できます！
```text
[root@localhost ~]# chronyc sources -v
210 Number of sources = 1

  .-- 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   4   377    12  -4588ns[-4889ns] +/-  851us
[root@localhost ~]# chronyc tracking
Reference ID    : A9FEA97B (169.254.169.123)
Stratum         : 4
Ref time (UTC)  : Fri Jul 29 17:11:06 2022
System time     : 0.000001211 seconds slow of NTP time
Last offset     : -0.000000598 seconds
RMS offset      : 0.000005439 seconds
Frequency       : 20.671 ppm fast
Residual freq   : -0.000 ppm
Skew            : 0.077 ppm
Root delay      : 0.000973927 seconds
Root dispersion : 0.000304328 seconds
Update interval : 16.3 seconds
Leap status     : Normal
[root@localhost ~]#

```


# まとめ
Amazon Time Sync Service は AWS が提供するマネージドの NTP サービスで追加料金なしで、かつインターネットアクセスが必要なくアクセスでき、VMware Cloud on AWS でも利用ができます！

VMware Cloud on AWS はAWS の様々なサービスとプライベート、かつ高速に接続をする事ができます。他の記事でも AWS サービスとの連携の例や、どうプライベートに接続できるかなど解説しておりますのでよろしければ参照下さい！また今後も AWS サービスとの連携例の記事を追加していきたいと思います。


# 参考文献
- [AWS ブログ: Amazon Time Sync Service で時間を維持する](https://aws.amazon.com/jp/blogs/news/keeping-time-with-amazon-time-sync-service/)
- [VMware Knowledge Base: Use Amazon Time Sync Service as an NTP server for compute workloads within VMC SDDC](https://kb.vmware.com/s/article/77306)

# 関連記事
https://qiita.com/mtoyoda/items/7bb66a60d567b180b96d

https://qiita.com/mtoyoda/items/99c9b5af4392fdc3c170

https://qiita.com/mtoyoda/items/3240d21e1a7f09e5ab71