Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド

[目次][索引][前へ][次へ]

14.12 フェールオーバー

ネーミングサービスはマスタ/スレーブモデルを使用したフェールオーバー機能をインプリメントします。アクティブモードのマスタとスタンドバイモードのスレーブという二つのネーミングサーバが同時実行中でなければなりません。マスタとスレーブの両ネーミングサーバは,同じ基本データをパーシステントなバッキングストアにサポートする必要があります。各サーバに強制的にバッキングストアと直接やり取りさせるために両方のサーバのキャッシング機能は必ずオフにして,データが確実に不変であるようにしてください。

両方のネーミングサーバがアクティブなら,ネーミングサービスを使用しているクライアントは常にマスタを優先します。マスタが不測の事態で終了した場合,スレーブネーミングサーバが引き継ぎます。このマスタからスレーブへの切り替えはシームレスであり,クライアントから見て透過的です。ただし,スレーブネーミングサーバはマスタサーバにはなりません。その代わり,マスタサーバが使用不能になった場合には一時的にバックアップします。この間に,ユーザはクラッシュしたマスタサーバの回復のための対策を行います。マスタが再び起動されたあとは,新しいクライアントからのリクエストだけがマスタサーバに送信されます。すでにスレーブネーミングサーバにバインドされているクライアントは,自動的にマスタにスイッチバックしません。

フェールオーバーが発生すると,クライアントから見て透過的ですが,わずかに遅延があります。これは,スレーブネーミングサーバのサーバオブジェクトを,入ってきたリクエストによってオンデマンドによる活性化をしなければならない場合があるためです。また,イテレータのような一時的なオブジェクトリファレンスは無効です。トランジェントなイテレータによるリファレンスを使用したクライアントは,これらのリファレンスの無効化に備えなければならないので,これは正常なことです。一般に,ネーミングサーバはあまり多くのイタレータオブジェクトを集中保管しないで,いつでもクライアントのイタレータによるリファレンスを無効にできます。これらはトランジェントリファレンスではなく,パーシステントリファレンスを使用したクライアントリクエストであればスレーブネーミングサーバに再転送されます。

すでにスレーブネーミングサーバにバインドされているクライアントは,自動的にマスタにスイッチバックしないで,一つのレベルのフェールオーバーしかサポートしません。したがって,スレーブネーミングサーバが使用不能になると,ネーミングサービスも使用不能になります。
<この節の構成>
14.12.1 フォルトトレランス用のネーミングサービスの設定