[Oracle Cloud] NTPサービス構成に関するメモ(Compute Instance編)

本記事の目的

OCIの Compute Instanceの時刻同期サービスとして利用されているChronyサービスの設定を確認してみました。

 

OCI Compute Instanceにおける時刻同期

OCI Compute Instanceではユーザが利用可能な時刻同期の仕組みとして「Oracle Cloud Infrastructure NTPサービス」が提供されています。

また、パブリックのNTPサービスや、オンプレミスのNTPサービスを利用することも出来ます。

マニュアル「インスタンス用のOracle Cloud Infrastructure NTPサービスの構成」
https://docs.oracle.com/cd/E97706_01/Content/Compute/Tasks/configuringntpservice.htm
より、

Oracle Cloud Infrastructureは、完全に管理され、セキュアで可用性の高いNTPサービスを提供します。このサービスを使用すると、仮想クラウド・ネットワーク(VCN)内から、コンピュートおよびデータベース・インスタンスの日時を設定できます。 Oracle Cloud Infrastructure NTPサービスでは、すべての可用性ドメインに冗長なバージョンの1デバイスを使用しています。 Stratum 1デバイスは、すべてのホストが同期を行う専用のStratum 2デバイスに同期されます。 このサービスはすべてのリージョンで使用可能です。

このトピックでは、このNTPサービスを使用するようにコンピュート・インスタンスを構成する方法について説明します。

また、パブリックNTPサービスを使用するようにインスタンスを構成するか、FastConnectを使用してオンプレミスのNTPサービスを利用することもできます。

なお、Oracle提供の標準イメージであるOracle 7.xおよびCentOS7.xの場合は、Chronyサービスがデフォルトで設定されているため自分でNTPサービスを構成する必要はありません。

Oracle提供のOracle 7.xおよびCentOS 7.xイメージは2018年2月以降にリリースされたものにはChronyサービスがデフォルトで含まれているため、これらのインスタンスに対してOracle Cloud Infrastructure NTPサービスを構成する必要はありません。

 

逆にいうと、それ以外の環境では自分でNTPサービスの設定を要確認。

 

Chronyとは?

Linux OSにおいて従来から広く利用されていたNTPDデーモンに代わる新しい時刻同期の実装であり、一部の環境を除いて今後はchronyの利用が推奨されている模様。

ChronyとNTPDの違いに関しては、RedHatの以下の記事にまとまってました。

・第17章 CHRONY スイートを使用した NTP 設定
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite

一部抜粋で紹介

17.1. chrony スイートの概要

  • システムクロックを NTP サーバーと同期する
  • システムクロックを GPS レシーバーなどの基準クロックと同期する
  • システムクロックをマニュアルの時間入力と同期する
  • ネットワーク内の他のコンピューターにタイムサービスを提供する NTPv4(RFC 5905)サーバーまたはピアとして

17.1.1. ntpd と chronyd の違い

chronyd が ntpd よりも優れている点として、以下が挙げられます。
  • chronyd は、時間参照へのアクセスが途切れやすい環境でも良好に機能します。一方 ntpd は、良好に機能するためには時間参照の定期的なポーリングを必要とします。
  • chronyd はネットワークの混雑が長時間にわたる場合でも機能します。
  • chronyd は通常、クロックをより高速に、より高い精度で同期できます。

 

17.1.2. NTP デーモンの選択

Chrony は、chrony に対応していないツールで管理または監視されているシステムや、chrony と互換性のないハードウェア基準クロックを搭載しているシステムを除いた、すべてのシステムに推奨されます。

 

 

Linux 7.x環境での設定確認

Oracle標準イメージのOracle Linux 7.6にて構築した Compute Instanceでの設定を実際に確認してみました。

[opc@comp01-2612 ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)

 

パッケージインストール状況

[opc@comp01-2612 ~]$ yum list installed | grep chrony
chrony.x86_64 3.2-2.0.1.el7 @anaconda/7.6

⇒デフォルトでインストール済

 

デーモンステータス確認

[root@comp01-2612 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-08-15 09:22:12 GMT; 11min ago★
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 1689 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
Process: 1679 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1684 (chronyd)
CGroup: /system.slice/chronyd.service
└─1684 /usr/sbin/chronyd

Aug 15 09:22:12 localhost.localdomain systemd[1]: Starting NTP client/server...
Aug 15 09:22:12 localhost.localdomain chronyd[1684]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER...DEBUG)
Aug 15 09:22:12 localhost.localdomain systemd[1]: Started NTP client/server.
Aug 15 09:22:17 comp01-2612 chronyd[1684]: Selected source 169.254.169.254
Hint: Some lines were ellipsized, use -l to show in full.

⇒デフォルトで起動

 

 

同期NTPサーバの確認

[root@comp01-2612 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.254 2 6 377 41 +6493ns[+8562ns] +/- 34ms

⇒*が現在同期しているNTPサーバ。「169.254.169.254」が利用されている。

 

 

トラッキング情報の確認

[root@comp01-2612 ~]# chronyc tracking
Reference ID : A9FEA9FE (169.254.169.254)
Stratum : 3
Ref time (UTC) : Thu Aug 15 09:38:28 2019
System time : 0.000008031 seconds slow of NTP time★
Last offset : -0.000006240 seconds
RMS offset : 0.000286135 seconds
Frequency : 38.118 ppm slow
Residual freq : -0.002 ppm
Skew : 0.047 ppm
Root delay : 0.000448381 seconds
Root dispersion : 0.022114785 seconds
Update interval : 65.3 seconds
Leap status : Normal

⇒★の部分がNTPサーバと自サーバの時刻差異。ここの差異が大きい場合は要確認。

 

 

chrony設定ファイル

[root@comp01-2612 ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.pool.ntp.org iburst
#server 1.pool.ntp.org iburst
#server 2.pool.ntp.org iburst
#server 3.pool.ntp.org iburst
server 169.254.169.254 iburst★

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3★

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

⇒NTPサーバとして「169.254.169.254」のみが指定されている
⇒時刻同期はStepモードとなっている

 

Slewモードへの変更

時間の逆戻りを避けるために、slewモードのみが動くよう/etc/chrony.confを以下のように修正

#makestep 1.0 3 
leapsecmode slew

 

・設定を反映するために再起動

[root@comp01-2612 ~]# systemctl restart chronyd

※時刻同期モードを直接確認できるコマンドは確認できず。設定ファイルで確認するしかない?

 

 

Oracle 7.xおよびCentOS 7.xイメージ以外の環境の場合

前述のマニュアルにOracle 6.xおよびWindowsの場合のガイド記載あり。

また、以下のDocも参考にできそう。
・OCI-How to configure and troubleshoot NTP Client in Oracle Linux 6/7 instances in Oracle Cloud Infrastructure (Doc ID 2490573.1)
https://support.oracle.com/knowledge/Oracle%20Cloud/2490573_1.html

 

なお、OCI Database(DBaaS)に関しては、以下の記事を参照。
[Oracle Cloud] NTPサービス構成に関するメモ(DBaaS編)

 

 

NTPサービスの設定に関する(当たり前すぎる)注意事項

何れのNTPサービスを利用する場合でも、該当インスタンスからNTPサーバに対してネットワーク的に疎通ができる必要がある点に注意。当たり前だが、該当のNTPサーバと通信できないと時刻同期は出来ない。

特にセキュリティ・リスト(Egressルール)を厳しく設定した環境では、NTPサーバとの通信ができておらず時間がずれていた、なんてことが起こりがちなので十分に注意したい。

 

参考情報

・マニュアル「インスタンス用のOracle Cloud Infrastructure NTPサービスの構成」(再掲)https://docs.oracle.com/cd/E97706_01/Content/Compute/Tasks/configuringntpservice.htm

・RedHat 第17章 CHRONY スイートを使用した NTP 設定(再掲)
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite

・RedHat 17.3. CHRONY の使用
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-using_chrony

・5分でできる!NTP(chrony)の設定方法【CentOS7】
https://hackers-high.com/linux/easy-chrony-settings/

・NTPに変わるChronyって何が変わったの?
https://legitwhiz.github.io/technology_memo/What_changed_to_chrony_instead_of_NTP.html

・chrony公式ページ
https://chrony.tuxfamily.org/

 

 

おまけ:最近読んだお奨めのLinux本

スポンサードリンク

1 Trackback / Pingback

  1. [Oracle Cloud] NTPサービス構成に関するメモ(DBaaS編) - IT Edge Blog

Leave a Reply

Your email address will not be published.


*