クラスタ


フェイルオーバーの仕組み
クラスタで、あるサーバーから別のサーバーに要求をリダイレクトする機能を、フェイルオーバーと呼びます。ユーザーがアクセスしようとするサーバーのデータベースが使用できないか混雑している場合、ユーザーはクラスタ内の別のデータベースのレプリカにリダイレクトされます。

各クラスタサーバーのクラスタマネージャは、各クラスタサーバーに調査を送信して各サーバーの可用性を判断します。クラスタマネージャは、各サーバーで使用できるレプリカを絶えず調べています。ユーザーがアクセスしようとするデータベースが使用できない場合、そのユーザーの要求は、クラスタ内の別のサーバーにあるデータベースのレプリカにリダイレクトされます。別のサーバーにあるレプリカに接続されても、フェイルオーバーされていることはユーザーには分かりません。


次の例でフェイルオーバーのプロセスについて説明します。このクラスタには 3 台のサーバーがあります。サーバー 1 は現在使用できません。サーバー 2 とサーバー 3 のクラスタマネージャは、サーバー 1 が使用できないことを認識しています。

クラスタでのフェイルオーバー

1 ある Notes ユーザーがサーバー 1 のデータベースを開こうとします。

2 Notes で、サーバー 1 からの応答がないことが分かります。

3 サーバーからの応答がないというメッセージはユーザーには表示されません。Notes は自身のクラスタキャッシュを参照してサーバー 1 がクラスタのメンバーかどうかを確認し、メンバーであればそのクラスタのほかのサーバー名を検索します.Notes Client がクラスタ内のサーバーに初めてアクセスすると、クラスタにあるすべてのサーバー名がクライアントのクラスタキャッシュに追加されます。このキャッシュは 15 分ごとに更新されます。

4 Notes は、クラスタキャッシュで次にリストされているサーバーのクラスタマネージャにアクセスします。

5 クラスタマネージャはクラスタデータベースディレクトリを参照し、クラスタの中で目的のデータベースのレプリカを持つサーバーを検索します。

6 クラスタマネージャは自身のサーバークラスタキャッシュを参照し、レプリカを持つ各サーバーの可用性を確認します。サーバークラスタキャッシュには、クラスタにあるすべてのサーバーの情報が格納されています。この情報は、クラスタサーバーが他のクラスタサーバーに調査を送信して取得します。

7 クラスタマネージャは、クラスタ内で目的のデータベースのレプリカを持つサーバーのリストを作成します。次にサーバーの可用性が高い順番でこのリストをソートし、Notes に送信します。

8 Notes はこのリストの先頭にあるサーバー、つまり使用できる可能性が最も高いサーバーにあるレプリカを開きます。そのサーバーが使用できなくなっている場合は、リストで次の順位にあるサーバーでレプリカを開きます。この例で、使用できる可能性が最も高いのはサーバー 2 です。

Notes クライアントがシャットダウンするとき、クラスタキャッシュの内容は CLUSTER.NCF というファイルに保存されます。Notes クライアントが起動するたびに、CLUSTER.NCF の情報はクラスタキャッシュに書き戻されます。