2023/07/11

ドミノクラスタの構築

ドミノクラスタは、複数台のドミノサーバで構成され、サーバ間の負荷分散や可用性向上を目的とした機能です。

ドミノ標準のタスクで構成されており、追加のインストールなどは発生せず利用できます。今回は、ドミノクラスタの新規構築を材料に、基本的なセットアップ方法をまとめます。


ドミノクラスタの概要

ドミノクラスタは、複数台のドミノサーバで構成されたクラスタグループで連携して動作する機能です。それぞれは、個別のドミノサーバとなりますので、別々のサーバ名で運用されます。

複数台のドミノサーバを運用する場合、通常、複製(レプリケーション)により、定期的に整合性を維持します。ドミノクラスタでは、文書の作成や更新などのイベントを検知すると、即時に他のクラスタメンバーにプッシュします。この動作をクラスタ複製と呼びます。

複製はスケジュール駆動型で、ドミノクラスタはイベント駆動型の複製となります。サーバ停止時など、何らかの理由でイベントが検知できない場合はクラスタ複製されません。よって、ドミノクラスタ環境であっても、通常の複製タスクは必要となる点に注意が必要です。


評価環境

今回ドミノクラスタを構築する環境は、先の記事でパーティションサーバとして構築した2台のサーバをドミノクラスタ化してみます。1台の PC でドミノクラスタまで評価できるのは、ありがたいですね。


セットアップ

Administrator クライアントを起動して、[設定] - [サーバー] - [すべてのサーバー] ビューを開きます。クラスタ化するサーバにチェックを入れて [クラスタへ追加] アクションボタンをクリックします。確認メッセージが表示されるので [はい] を選択します。


『クラスタ名』という画面が表示されるので、"*新規クラスタの作成" を選択し、[OK] をクリックします。続いて、新規クラスタ名を入力する画面が表示されるので、クラスタグループ名を入力します。


続いて、実行の確認画面が表示されます。[はい] を選択します。この場合、サーバ文書が即座に更新されます。


[いいえ] を選択すると次のようなシステム管理プロセスのリクエストが作成され、AdminP がサーバ文書を更新します。サーバ文書の更新なので、競合が発生する確率は少ないとは思うのですが、それでもしっかり配慮されているようです。



どちらにしろ、結果的にはサーバ文書のクラスタ名欄にクラスタグループ名がセットされます。


セットアッププロセスの流れ

サーバ文書にクラスタ名が設定されたことを検知して起動するのだと思いますが、しばらく待つとドミノクラスタのセットアッププロセスが実行されます。

まず、サーバ文書が更新されたサーバ(Server1/Domino)で処理が開始されます。コンソールログには次のようなログが出力されます。

処理開始のメッセージの後、Cluster Directory タスクが起動します。初回なので、管理データベースである cldbdir.nsf を作成します。

直後に cldbdir.nsf を複製しようとしていますが、他のクラスタメンバーにはまだ存在しないので空振りしているようです。

[4294:0092-1058] 2023/07/10 20:53:48 Adding server to cluster Cluster
[2E54:0002-1038] 2023/07/10 20:53:48 Cluster Database Directory started
[2E54:0002-1038] 2023/07/10 20:53:48 Created database Cluster Database Directory: cldbdir.nsf
[2E54:0002-1038] 2023/07/10 20:53:48 Finished initialization of Cluster Database Directory
[2E54:0002-1038] 2023/07/10 20:53:48 Replicating Cluster Database Directory with Server2/Domino
[2E54:0002-1038] 2023/07/10 20:53:48 Starting replication with server Server2/Domino
[2E54:0002-1038] 2023/07/10 20:53:49 Unable to replicate with server Server2/Domino: 選択したサーバーにレプリカがありません
[2E54:0002-1038] 2023/07/10 20:53:49 Unable to update Cluster Database Directory: 選択したサーバーにレプリカがありません

続いて、Cluster Replicater が起動されます(一部不明なログがありますが...)。その後、再度複製タスクが起動されています。2文書を更新しているので、このタイミングで、クラスタ名がセットされたサーバ文書を反映しているようです。

[0C54:0007-3170] SaveSCRState: Error deleting file C:\Lotus\Domino\Data1\scrstate.dat. 103
[0C54:0002-4248] 2023/07/10 20:53:58 Cluster Replicator started
[0C54:0002-4248] 2023/07/10 20:53:58 RestoreSCRState: Starting SCR restore at 2023/07/10 20:53:58
[0C54:0002-4248] 2023/07/10 20:53:58 Cluster Replicator is set to Ignore Database Quotas
[4294:0092-1058] 2023/07/10 20:54:08 Starting replication with server Server2/Domino
[4294:0092-1058] 2023/07/10 20:54:08 Pushing names.nsf to Server2/Domino names.nsf
[4294:0092-1058] 2023/07/10 20:54:08 レプリケータは 2 文書を Server2/Domino names.nsf へ names.nsf から更新しました
[4294:0092-1058] 2023/07/10 20:54:08 Finished replication with server Server2/Domino

最後にクラスタ環境用の空き時間検索データベースの clbusy.nsf を作成しています。不要となる busytime.nsf の削除は、この時点では失敗しているようですね。

[39F0:0002-4790] 2023/07/10 20:54:18 SchedMgr: clubusy.nsf was successfully created, Error cleaning up busytime.nsf: データベースは現在使用中です
[39F0:0002-4790] 2023/07/10 20:54:18 WARNING: No clustermates found for this server. If ANY should exist stop this task and check the cluster configuration or risk busytime integrity!
[2048:0002-2184] 2023/07/10 20:54:57 Rooms and Resources Manager shutdown complete


続いて、もう一方のサーバ(Server2/Domino)です。

まず、Server1 の2回目の複製の時刻に、Server1 がセッションを開いたメッセージが出ています。このタイミングで、Server2 のサーバ文書が更新されたと想定できます。

[255C:008E-123C] 2023/07/10 20:54:08 Opened session for Server1/Domino (Release 12.0.2FP1)

ここから先の挙動は Server1 と同様です。まず、Cluster Directory タスクが起動します。

ただ、Server2 は後追いの実行になり、Server1 にはすでに cldbdir.nsf が出来上がっているので、複製に成功しています。

[255C:008E-123C] 2023/07/10 20:54:08 Opened session for Server1/Domino (Release 12.0.2FP1) [255C:0092-3F00] 2023/07/10 20:55:01 Adding server to cluster Cluster
[442C:0002-1548] 2023/07/10 20:55:01 Cluster Database Directory started
[442C:0002-1548] 2023/07/10 20:55:01 Created database Cluster Database Directory: cldbdir.nsf
[442C:0002-1548] 2023/07/10 20:55:01 Finished initialization of Cluster Database Directory
[442C:0002-1548] 2023/07/10 20:55:01 Replicating Cluster Database Directory with Server1/Domino
[442C:0002-1548] 2023/07/10 20:55:01 Starting replication with server Server1/Domino
[442C:0002-1548] 2023/07/10 20:55:01 Pulling cldbdir.nsf from Server1/Domino cldbdir.nsf
[442C:0002-1548] 2023/07/10 20:55:01 レプリケータは 125 文書を cldbdir.nsf へ Server1/Domino cldbdir.nsf から追加しま した
[442C:0002-1548] 2023/07/10 20:55:01 Pushing cldbdir.nsf to Server1/Domino cldbdir.nsf
[442C:0002-1548] 2023/07/10 20:55:01 レプリケータは 119 文書を Server1/Domino cldbdir.nsf へ cldbdir.nsf から追加しま した
[442C:0002-1548] 2023/07/10 20:55:01 レプリケータは 2 文書を Server1/Domino cldbdir.nsf へ cldbdir.nsf から更新しまし た
[442C:0002-1548] 2023/07/10 20:55:01 Finished replication with server Server1/Domino

続いて、Cluster Replicater の起動です。このタスクのID(1404:0002-2488)と同じログで、複製が記録されていますので、いきなりクラスタ複製が動作しているようですね。

[1404:0002-2488] 2023/07/10 20:55:11 Cluster Replicator started
 [1404:0008-1D08] SaveSCRState: Error deleting file C:\Lotus\Domino\Data2\scrstate.dat. 103
[1404:0002-2488] 2023/07/10 20:55:11 RestoreSCRState: Starting SCR restore at 2023/07/10 20:55:11
[1404:0002-2488] RTRFindPushDbs: Startup replication: dbs to be pushed 3 at 2023/07/10 20:55:11
[1404:0002-2488] 2023/07/10 20:55:11 Cluster Replicator is set to Ignore Database Quotas
[1404:0002-2488] 2023/07/10 20:55:11 Pushing admin4.nsf to Server1/Domino admin4.nsf
[1404:0002-2488] 2023/07/10 20:55:11 Pushing ddm.nsf to Server1/Domino ddm.nsf
[1404:0002-2488] 2023/07/10 20:55:11 レプリケータは 1 文書を Server1/Domino ddm.nsf へ ddm.nsf から追加しました
[1404:0002-2488] 2023/07/10 20:55:11 Pushing names.nsf to Server1/Domino names.nsf
[255C:0092-3F00] 2023/07/10 20:55:21 Starting replication with server Server1/Domino
[255C:0092-3F00] 2023/07/10 20:55:21 Pulling cldbdir.nsf from Server1/Domino cldbdir.nsf
[255C:0092-3F00] 2023/07/10 20:55:21 Pushing cldbdir.nsf to Server1/Domino cldbdir.nsf
[255C:0092-3F00] 2023/07/10 20:55:21 Finished replication with server Server1/Domino

最後に、空き時間検索データベースの clbusy.nsf の作成です。こちらは、作成に失敗しており、Server1 より状況はよくなさそうです。

[46E0:0002-096C] 2023/07/10 20:55:56 RnRMgr: Error switching busy time database from busytime.nsf to clubusy.nsf: RnRMgr: Error switching cluster busy time database
[46E0:0002-096C] 2023/07/10 20:55:56 Rooms and Resources Manager shutdown complete

ですが、直後の複製が正常に実行されたログを発見しました。ログの表示はさておき、正常に作成は終わっているようです。

[40FC:0002-0574] 2023/07/10 20:56:05 Starting replication with server Server1/Domino
[40FC:0002-0574] 2023/07/10 20:56:05 Pulling clubusy.nsf from Server1/Domino clubusy.nsf
[40FC:0002-0574] 2023/07/10 20:56:05 レプリケータは 2 文書を clubusy.nsf へ Server1/Domino clubusy.nsf から追加しました
[40FC:0002-0574] 2023/07/10 20:56:05 Finished replication with server Server1/Domino
[1404:0002-2488] 2023/07/10 20:56:12 Pushing clubusy.nsf to Server1/Domino clubusy.nsf
[1404:0002-2488] 2023/07/10 20:56:12 レプリケータは 1 文書を Server1/Domino clubusy.nsf へ clubusy.nsf から追加しました
[1404:0002-2488] 2023/07/10 20:56:12 レプリケータは 2 文書を Server1/Domino clubusy.nsf へ clubusy.nsf から更新しました


セットアップ結果

先ほどは、処理の流れを記載しましたが、ここでは、処理結果をまとめます。クラスタ環境を構築すると次のように環境が更新されます。


◇ サーバ文書の更新

クラスタ環境が構築されるとサーバ文書のクラスタ名にセットアップで指定したクラスタグループ名が表示されます。

また、ドミノディレクトリの [設定] - [クラスタ] ビューでメンバーのサーバを確認できます。


◇ クラスタタスクの起動

ドミノクラスタ環境では、クラスタタスクが自動的に起動されます。

起動されるタスクは、Cluster Directory(cldbdir)と Cluster Replication(clrepl)の2種類です。

Cluster Directory は、クラスタ対象の DB を管理するタスクです。結果は、『Cluster Directory』データベース(cldbdir.nsf)に登録され、クラスタ対象の DB の確認や DB 単位でのクラスタの停止設定が可能です。

Cluster Replication は、発生したイベントを即座にクラスタメンバーのサーバに反映するタスクです。


◇ notes.ini の更新

セットアップでクラスタを有効にするとサーバの notes.ini に次のエントリが追加されます。

SERVER_CLUSTER_ON=1

この設定により、次回サーバ起動時から、Cluster Directory(cldbdir)と Cluster Replication(clrepl)が自動的に起動されます。


◇ 空き時間検索 DB の再作成

標準の空き時間検索 DB は busytime.nsf ですが、クラスタ環境では clbusy.nsf とファイル名が変化します。

ファイル名の置き換えは、サーバタスクが自動で行いますので、意識する必要はありません。ただ、ファイル名が変化することを知らないと、空き時間検索のトラブル対応時に混乱するので、ご注意ください。


基本的なセットアップ作業については、以上です。

0 件のコメント:

コメントを投稿