データベース技術調査ブログ

LinuxやPostgreSQL、Oracleデータベース、AWSの知識をアウトプットしていきます

Linuxのchronydの設定解除 ~Oracle RACのCTSSを有効化~

Linux7からはデフォルトのNTPサービスとしてntpdに代わりchronydがインストールされています。

今回はOracle RAC構築の際にCTSS (Cluster Time Synchronization Service)を利用しようとして詰まった「chronydの設定解除」について書いていきます。

(ntpdとほぼ同じだったので、常識なのかもしれない...)

 

 

今回の環境

今回は以下の環境でRACを構築しようとしていました。

【ホスト環境】

ホストOS:Windows10
仮想化ソフトウェア:VirtualBox 6.0.4

【ゲスト環境】

サーバー構成
 DBサーバ 2台(node1、node2)
 DNSサーバー

ゲストOS:Oracle Linux 7.6
Grid Infrastructureのバージョン:12.2.0.1

前提

  • Linux7のデフォルトのNTPサービスがchronydであることを知らなかった
  • OUIがNTPの設定を判別する方法を知らなかった

上記の前提でのお話ですので、生暖かい目で読んでください

参考にした手順

Oracleが出しているインストールガイド
https://www.oracle.com/technetwork/jp/database/enterprise-edition/documentation/racdb12201-inst-linux-x64-3795525-ja.pdf
(サクッと構築できるようにRPMをガンガン使って最小手数で構築する手順です。)



 

NTPに悩まされて解決に至るまで

サーバー間のLANを2重化してみたところ以外は差分なく反映していきました。


しかし、CTSSを有効にするためにNTPの設定を解除するところで予想外の出来事に遭遇しました。
そもそもntpdのサービスもなければconfファイルもいないのです。

[root@node1 ~]# service ntpd status
Redirecting to /bin/systemctl status ntpd.service
Unit ntpd.service could not be found.
[root@node1 ~]#
[root@node1 ~]# cat /etc/ntp.conf 
cat: /etc/ntp.conf: そのようなファイルやディレクトリはありません

Linuxは不勉強な私にもやさしくsystemctlへとリダイレクトしてくれるんです。
そのやさしさ、好きです(/ω\)



この時の不勉強な私はまだchronydの存在など知らずにのん気なものでした。
「なんだ、最小構成にしたからntpdいないんじゃん(´-ω-`)」



...ところが、インストールする際にOUI先生は「NTPどうのこうのが...」とおっしゃってきたのです。

OUIのチェック画面(ここで引っかからないことがない...)メモリやswapは置いておいて、NTPが引っかかっています。そして、「chrony demon ...」と書かれています。なんだこれ?
OUIのチェック画面

何やらNTPどうのこうのの下に「chrony demon ...」なるものがいるではありませんか。


そして調べると、chronydは、Linux7のデフォルトのNTPクライアントであることがわかりました。
qiita.com



さらに調べると、以下のマニュアルにたどり着きました。
18cのInstallation and Upgrade Guide for Linux
docs.oracle.com



以下のコマンドを実行すればchronydサービスを無効化できるんだなとのことで実行!

[root@node1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2019-03-16 10:02:21 JST; 1h 21min ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 3472 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 3438 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 3451 (chronyd)
   CGroup: /system.slice/chronyd.service
           mq3451 /usr/sbin/chronyd

 3月 16 10:02:21 node1.oracle12c.jp systemd[1]: Starting NTP client/server...
 3月 16 10:02:21 node1.oracle12c.jp chronyd[3451]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK ...UG)
 3月 16 10:02:21 node1.oracle12c.jp chronyd[3451]: Frequency 4.518 +/- 0.097 ppm read from /var/lib/chro...ift
 3月 16 10:02:21 node1.oracle12c.jp systemd[1]: Started NTP client/server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@node1 ~]# 
[root@node1 ~]# systemctl stop chronyd
[root@node1 ~]# 
[root@node1 ~]# systemctl disable chronyd
Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@node1 ~]# 
[root@node1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:chronyd(8)
           man:chrony.conf(5)

 3月 16 10:02:21 node1.oracle12c.jp systemd[1]: Starting NTP client/server...
 3月 16 10:02:21 node1.oracle12c.jp chronyd[3451]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK ...UG)
 3月 16 10:02:21 node1.oracle12c.jp chronyd[3451]: Frequency 4.518 +/- 0.097 ppm read from /var/lib/chro...ift
 3月 16 10:02:21 node1.oracle12c.jp systemd[1]: Started NTP client/server.
 3月 16 11:24:38 node1.oracle12c.jp chronyd[3451]: chronyd exiting
 3月 16 11:24:38 node1.oracle12c.jp systemd[1]: Stopping NTP client/server...
 3月 16 11:24:38 node1.oracle12c.jp systemd[1]: Stopped NTP client/server.
Hint: Some lines were ellipsized, use -l to show in full.

 



「よし、これでOUI先生も許してくれるだろう...(メモリとスワップは無視しよう)」
そんな甘い考えのもと再度チェックをしてもらったところ、OUI先生は許してくれませんでした。


あれ、chronydは消えたけど、NTPは残っている...
再びのOUIのチェック画面

「何でですか!?」と画面に問いかけても返事はありません。
(「こちとらちゃんとchronyd停止させてんだぞ!」と半ギレ)

(20190701追記:19cのGIインストールするときにまた引っ掛かりましたが(成長しない)、ちゃんと見ると/etc/chrony.confが残っているよっていう表示出てました。)

 

とりあえず、後でCTSSは設定しようと無視してインストール(よい子はマネしないでね!)


OUI先生から2つほど×を頂きつつも、インストール完了。

Configure Oracle Grid Infrastructure for a ClusterとOracle Cluster Verification Utilityで×を頂きました
OUIの結果画面


クラスタリソースを確認しても異常なし。(よかった...)

[grid@node1 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ASMNET2LSNR_ASM.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.DATA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.chad
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       node1                    169.254.89.232 192.1
                                                             68.100.101 192.168.2
                                                             00.101,STABLE
ora.asm
      1        ONLINE  ONLINE       node1                    Started,STABLE
      2        ONLINE  ONLINE       node2                    Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       node1                    Open,STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------
[grid@node1 ~]$ 

 



しかし、CTSSは有効になっていませんでした。

[grid@node1 ~]$ crsctl check ctss
CRS-4700: The Cluster Time Synchronization Service is in Observer mode.
[grid@node1 ~]$ 

 



やっぱり時刻同期してないのは気持ち悪いので何とかCTSSを有効にしたいと思い、改めて手順を見直すと、ntpdのほうではサービス止めるだけじゃなくて「/etc/ntpd.conf」を消していたなと思い至りました。


探してみると「/etc/chronyd.conf」がいました。(上記引用した記事に書いてあった通り)

[grid@node1 ~]$ ls -l /etc/chrony.conf 
-rw-r--r--. 1 root root 1080  9月 26 21:38 /etc/chrony.conf

 


それでは、消してみることに...

[root@node1 ~]# mv /etc/chrony.conf ./backup
[root@node1 ~]# 

※本当に消すのではなくて「/root/backup/」に移動させています。



そして、クラスタを再起動してCTSSが有効になっているか確認すると

[grid@node1 ~]$ crsctl check ctss
CRS-4701: The Cluster Time Synchronization Service is in Active mode.
CRS-4702: Offset (in msec): 0
[grid@node1 ~]$ 


「やった!無事切り替わっている(*^▽^*)」


そんなこんなで、無事Grid Infrastructureのインストールが完了しましたとさ。
めでたしめでたし♪
(↑いやいや、OUIのチェック時に気づけよ!)



 

結論

今回分かったこと、Grid InfrastructureでNTPの設定を解除するには次の2つが必要であるということです。
(え、これって常識なの...?)

 1. NTPのサービスを止めて起動しないようにする
 2. NTPの設定ファイルを消す


1は気づいても、2は忘れがち。
注意しよう( ..)φメモメモ

最後に

手順書の隅々まで意味を理解しているかどうかが難しいけれどとても大事なことです。改めにそのことが身に沁みました。

そして、こういうトラブルシューティングはいい経験になります。
今後も検証環境でトラブルと闘っていきたいと思います。


終わり