本記事では、クラスタ内の複数マシンに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サービスが有効であることを示します。