
本記事の目的
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/
Leave a Reply