本記事では、クラスタ内の複数のマシンにNTPクロックソースを設定する方法について説明します。OceanBaseデータベースを単一マシンでデプロイする場合、個人テストを行う場合、または既にNTPクロック同期が設定されている場合は、この設定は不要です。
分散型OceanBaseクラスタをデプロイする場合は、クラスタ内の各マシンの時刻が同期していることを保証する必要があります。そうでない場合、クラスタは起動できず、サービスの実行中に異常が発生する可能性があります。OceanBaseクラスタで許容される時刻偏差は2秒を超えてはなりません。2秒を超えると、リーダー不在の状態が発生します。時刻同期を回復した後、OceanBaseクラスタを再起動すると正常に戻ります。
説明
本記事はx86アーキテクチャのCentOS Linux 7.9イメージ環境に基づいた操作手順です。その他の環境では若干異なる場合がありますので、実際の環境に準じてください。
OceanBaseはV4.0.0から動的な時刻変更をサポートしています。変更間隔が2秒以内であれば、データの正確性やクラスタの安定した動作に影響はありません。
OCPがOceanBaseクラスタノード上にデプロイされていない場合でも、OCPノードとOceanBaseクラスタノードの時刻同期を設定する必要があります。これは、時刻偏差によってOCPの操作に異常が発生するのを防ぐためです。
前提条件
NTP時刻源を設定する前に、すべてのマシンでrootユーザー権限が付与されていることを確認してください。
手順
以下の手順に従って、NTP時刻同期を設定します。
各マシンで以下のコマンドを実行して、NTPをインストールします。
[root@test002 ~]# yum install ntp ntpdate -y以下のコマンドを実行して、サーバーのNTP接続を確認します。
[root@test002 ~]# ntpq -4p remote refid st t when poll reach delay offset jitter ============================================================================== *time6.aliyun.co xxx.xxx.xxx.xxx 2 u 712 1024 377 21.951 4.253 4.208(オプション)NTPサーバーサービスを開始します。
既にNTPサーバーがある場合は、この手順をスキップできます。このドキュメントでは、ターゲットマシン
10.10.10.1をNTPサーバーとして使用します。設定ファイルを編集します。
rootユーザーでNTPサーバーにログインし、以下のコマンドを実行して設定ファイルを編集します:
[root@test001 ~]# vi /etc/ntp.conf設定ファイルに以下の内容を追加します:
server <your_ntp_server_ip>設定ファイルを保存して閉じます。
以下のコマンドを実行して、NTPサーバーサービスを再起動します:
[root@test001 ~]# service ntpd restart以下のコマンドを実行して、NTPサーバーサービスが正常に起動したかどうか確認します:
[root@test001 ~]# ps -ef | grep -i ntpd以下のコマンドを実行して、NTPサービスの起動時自動起動を設定します:
[root@test001 ~]# chkconfig ntpd on
NTPクライアントサービスを開始します。
注意
NTPサーバーサービスが起動した後、5分待ってからNTPクライアントサービスを開始してください。そうしないと、システムは「no server suitable for synchronization found」というメッセージを表示します。
rootユーザーでOBServerノードサーバーにログインします。
以下のコマンドを実行して、NTPサービスを停止します:
[root@test002 ~]# service ntpd stop以下のコマンドを実行して、NTPサーバーの時刻を同期します:
[root@test002 ~]# ntpdate 10.10.10.1設定ファイルを編集します。
以下のコマンドを実行して、設定ファイルを開きます:
[root@test002 ~]# vi /etc/ntp.conf設定ファイルに以下の内容を追加します:
server <your_ntp_server_ip>以下のコマンドを実行して、NTPサービスを起動します:
[root@test002 ~]# /etc/init.d/ntpd start
以下のコマンドを実行して、設定が成功したかどうか確認します。
コマンドを実行します:
[root@test002 ~]# ntpstat以下の結果が返されます:
synchronised to NTP server (xxx.xxx.xxx.xxx) at stratum 3 time correct to within 2 ms polling server every 64 sコマンドを実行します:
[root@test002 ~]# timedatectl以下の結果が返されます:
Local time: Thu 2021-04-22 11:02:32 CST Universal time: Thu 2021-04-22 03:02:32 UTC RTC time: Thu 2021-04-22 11:02:32 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes RTC in local TZ: yes DST active: n/a上記のコマンドを実行して対応する結果が返されれば、NTPサービスが有効であることを示します。