OceanBase関連製品間では、時間について暗黙の関連性があります。そのため、OceanBase製品を利用するすべてのサーバーの物理時刻は同期されている必要があり、誤差はできるだけ2秒以内、あるいはそれ以下に抑える必要があります。したがって、クラスタ内の複数ノードおよびOCPノードのクロックには、クロック同期サービスであるNTPまたはchronyを設定し、すべてのノードのクロック偏差を2秒以内に保証する必要があります。本記事では、クラスタ内の複数のマシンにNTPクロックソースを設定する方法について説明します。
OceanBaseデータベースを単一マシンでインストールする場合は、この設定は不要です。
前提条件
NTP時刻ソースを設定する前に、すべてのマシンでrootユーザー権限を持っていることを確認してください。
手順
以下の手順に従ってNTP時刻同期を設定します。
説明
通常はLinuxに組み込まれているNTPサービスを使用して時刻を同期できます。現在のマシン環境に安定した信頼性の高いNTPサーバーがある場合は、それをすべてのサーバーのNTPソースとして選択します。ない場合は、固定の1台のサーバーを選択し、それをNTPソースとして使用します。
各マシンでYUMパッケージマネージャーを使用してNTPをインストールします。
[root@xxx /]# yum install ntp ntpdate -yntp.confファイルを設定します。[root@xxx /]# vi /etc/ntp.conf restrict default ignore restrict 127.0.0.1 restrict 192.168.0.0 mask 255.255.0.0 driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid #logfile /var/log/ntp.log # local clock server 127.127.1.0 fudge 127.127.1.0 stratum 10 server 192.168.XX.XX iburst minpoll 4 maxpoll 6パラメータの説明:
restrictは、IPアドレスに関連する時刻同期コマンドの権限を指定するために使用されます。restrict [IP] mask [netmask_IP] [parameter]parameterにはignore、nomodify、noquery、notrap、notrustなどが含まれます。ignoreはデフォルトですべてのタイプのNTP同期を拒否します。serverは、上位NTPソースサーバーを指定するために使用されます。server [IP or hostname] [prefer]上位NTPソースサーバーがない場合は、127.127.1.0に設定できます。これは、ローカルマシンがNTPソースサーバーとして機能することを意味します。
NTP同期サービスを再起動します。
[root@xxx /]# systemctl restart ntpd [root@xxx /]# systemctl status ntpdNTP同期状態を確認します。
説明
NTPサービスが起動したばかりの場合、しばらく待ってからntpstatコマンドを実行する必要があります。
[root@xxx /]# ntpstat [root@xxx /]# ntpq remote refid st t when poll reach delay offset jitter ======================================================================== LOCAL(0) .LOCL. 10 l 589 64 0 0.000 0.000 0.000 *192.168.XX.XX xxx.xxx.xxx.xxx 2 u 18 64 377 1.591 0.249 0.054コマンドntpqの結果パラメータの解釈:
remote:使用中のNTPサーバーを表します。*は現在選択されているNTPサーバーを表します。LOCALはローカルマシンを表します。xは使用されなくなったことを表します。-は使用されなくなったことを表します。+は優先順位が高いことを表します。#は良好だが使用されていないことを表します。refid:リモートNTPサーバーが使用するより上位のNTPサーバー。INITは取得中を表します。st:リモートNTPサーバーのStratum(階層)。when:最後の同期から現在までの時間(デフォルトは秒、hは時間、dは日を表します)。poll:同期の頻度、単位:秒。delay:ローカルマシンからリモートNTPサーバーまでの往復時間(ミリ秒単位)。offset:ローカルマシンとリモートNTPサーバーの時間オフセット(ミリ秒単位)。jitter:ローカルマシンとリモートNTPサーバーの時間オフセットの平均偏差(ミリ秒単位)。
最終的なチェック方法。
最終的な同期遅延のチェックは以下を基準とします:
[root@xxx /]# clockdiff 192.168.XX.XX .................................................. host=192.168.XX.XX rtt=1(0)ms/1ms delta=0ms/0ms Sat Apr 18 14:41:40 2020(オプション)手動同期の方法。
時刻に常に大きな誤差がある場合は、
ntpdateコマンドを使用して手動で時刻を修正できます。これは自動同期サービスと競合するため、事前にNTPサービスを停止する必要があります。[root@xxx /]# systemctl stop ntpd [root@xxx /]# ntpdate -u 192.168.XX.XX 18 Apr 14:54:20 ntpdate[108001]: adjust time server 192.168.XX.XX offset -0.000180 secこの方法が有効であれば、システムのcrontabに設定します。
[root@xxx /]# crontab -e * * * * * /sbin/ntpdate -u 192.168.XX.XX 2>&1 1>>/tmp/ntpupdate.log(オプション)ファイアウォールルール。
標準的な環境ではファイアウォールを無効にする必要があります。サーバー環境でどうしてもファイアウォールを有効にする必要がある場合は、以下のルールを参考に操作してください。
[root@xxx /]# iptables --A INPUT --p udp --i eth0 --s 192.168.1.0/16 --dport 123 --j ACCEPT [root@xxx /]# systemctl restart ntpd