Alibaba Cloud ECS の Time Zone, NTP まわりをみてみた

More than 1 year has passed since last update.


環境


  • 東京リージョン(ap-northeast-1)で ECS を立ち上げました。

  • インスタンスタイプは ecs.n4.small

  • OS は CentOS 7.4 です。


# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)


タイムゾーン

デフォルトのタイムゾーンは Asia/Shanghai でした! UTC+8 なので、なにも気にせず使っていると、ログの時間や cron ではまりそうです。

# timedatectl

Local time: Thu 2018-02-15 10:14:44 CST
Universal time: Thu 2018-02-15 02:14:44 UTC
RTC time: Thu 2018-02-15 10:14:43
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: yes
DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.
This mode can not be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC
time is never updated, it relies on external facilities to maintain it.
If at all possible, use RTC in UTC by calling
'timedatectl set-local-rtc 0'.

Asia/TokyoUTC にセットしておいた方が、運用上良いと思います。 

# timedatectl set-timezone Asia/Tokyo

# timedatectl set-timezone UTC


NTP

NTP は chrony ではなく ntp が有効になっていました。

# systemctl list-unit-files

chronyd.service disabled
ntpd.service enabled

ntp.conf を見てみました。aliyun の NTP サーバを見に行くようになっています。

これらの NTP サーバの情報は、ドキュメントにも載っていました。

https://jp.alibabacloud.com/help/faq-detail/40583.htm

# cat /etc/ntp.conf

driftfile /var/lib/ntp/drift
pidfile /var/run/ntpd.pid
logfile /var/log/ntp.log

# Access Control Support
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery
restrict 172.16.0.0 mask 255.240.0.0 nomodify notrap nopeer noquery
restrict 100.64.0.0 mask 255.192.0.0 nomodify notrap nopeer noquery
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap nopeer noquery

# local clock
server 127.127.1.0
fudge 127.127.1.0 stratum 10

restrict ntp1.aliyun.com nomodify notrap nopeer noquery
restrict ntp1.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp10.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp11.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp12.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp2.aliyun.com nomodify notrap nopeer noquery
restrict ntp2.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp3.aliyun.com nomodify notrap nopeer noquery
restrict ntp3.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp4.aliyun.com nomodify notrap nopeer noquery
restrict ntp4.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp5.aliyun.com nomodify notrap nopeer noquery
restrict ntp5.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp6.aliyun.com nomodify notrap nopeer noquery
restrict ntp6.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp7.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp8.cloud.aliyuncs.com nomodify notrap nopeer noquery
restrict ntp9.cloud.aliyuncs.com nomodify notrap nopeer noquery

server ntp1.aliyun.com iburst minpoll 4 maxpoll 10
server ntp1.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp2.aliyun.com iburst minpoll 4 maxpoll 10
server ntp2.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp3.aliyun.com iburst minpoll 4 maxpoll 10
server ntp3.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp4.aliyun.com iburst minpoll 4 maxpoll 10
server ntp4.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp5.aliyun.com iburst minpoll 4 maxpoll 10
server ntp5.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp6.aliyun.com iburst minpoll 4 maxpoll 10
server ntp6.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10

時刻同期の状況も確認してみます。

# ntpq -pn

remote refid st t when poll reach delay offset jitter
==============================================================================
127.127.1.0 .LOCL. 10 l 662 64 0 0.000 0.000 0.000
*182.92.12.11 10.137.38.86 2 u 62 64 377 62.432 771.403 1.019
120.25.115.19 10.137.53.7 2 u 87 64 222 74.786 776.907 1.835
203.107.6.88 100.107.25.114 2 u 83 64 222 59.055 775.496 2.026
-120.25.108.11 10.137.53.7 2 u 31 64 377 75.766 781.655 1.435
10.143.33.49 .INIT. 16 u - 1024 0 0.000 0.000 0.000
10.143.33.50 .INIT. 16 u - 1024 0 0.000 0.000 0.000
10.143.33.51 .INIT. 16 u - 1024 0 0.000 0.000 0.000
10.143.0.44 .INIT. 16 u - 1024 0 0.000 0.000 0.000
10.143.0.45 .INIT. 16 u - 1024 0 0.000 0.000 0.000
10.143.0.46 .INIT. 16 u - 1024 0 0.000 0.000 0.000
-100.100.5.1 10.143.0.44 3 u 17 64 377 73.744 773.212 1.256
-100.100.5.2 10.143.0.44 3 u 22 64 377 77.402 773.716 1.811
+100.100.5.3 10.143.0.44 3 u 13 64 377 73.890 772.016 3.269
-100.100.3.1 10.137.38.86 2 u 18 64 377 77.474 770.219 1.480
+100.100.3.2 10.143.0.44 3 u 15 64 377 72.587 774.374 1.591
+100.100.3.3 10.143.0.44 3 u 20 64 377 73.611 772.133 1.174


ECS がグローバル IP アドレスを持ってない場合の時刻同期

上で確認していたインスタンスは、グローバル IP を持っていました。つまり、インターネットへの outbount/inbount 通信が出来るインスタンスです。

ECS をプライベートなネットワーク(グローバル IP アドレスを持たないので、インターネットへの outbount/inbount 通信が出来ない状態)で運用したい場合、時刻同期はどうなるでしょうか。

ちなみに AWS の場合は、Amazon Time Sync Service を使うことで、インターネットへの接続なしにリンクローカル IP アドレスを使って時刻同期を行うことができます。

では、プライベートな ECS を立ち上げて、時刻同期状況を確認してみます。

100.100.3.1* が付いているので、時刻同期が出来ています!

スクリーンショット 2018-02-16 15.00.02.png

でも一つ疑問が。 100.100.3.1 は reserved IP address なのですが、ルーティングはどうなっているのでしょうか。

実は、Alibaba Cloud の場合、 VRouter のルートテーブルに、 100.64.0.0/10 宛はシステムルートエントリとしてデフォルトで登録されているのです。

https://jp.alibabacloud.com/help/doc-detail/53682.htm

また、ntp.conf に記載されている NTP サーバは、名前で記載されているのに、100.100.3.1 と名前解決できています。

DNS サーバの設定を見てみましたが、Alibaba Cloud の DNS サーバが設定されていました。 

これらの DNS サーバも  100.64.0.0/10 のシステムルートエントリでルーティングされるので、インターネット接続不要で名前解決することができるのですね。

# cat /etc/resolv.conf

options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.138
nameserver 100.100.2.136
search localdomain

DNS サーバを上書きなどで消さないようにしておけば、インターネット接続なしに、名前解決ができ、NTP 時刻同期もできることが分かりました。 


まとめ


  • タイムゾーンのデフォルトは Asia/Shanghai になっているので、 UTC, Asia/Tokyo に変更するのが良いと思います。

  • インターネット接続を持たない ECS も NTP 時刻同期可能


    • デフォルトの DNS サーバは消さないようにしておく