Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性 (HA) 管理ガイド

概要

RMI-IIOP 負荷分散では、IIOP クライアント要求が別のサーバーインスタンスまたはネームサーバーに分散されます。目標は、負荷をクラスタ間に均等に拡散して、スケーラビリティーを実現することです。また、IIOP 負荷分散を EJB のクラスタリングおよび可用性と結合すれば、EJB フェイルオーバーも実現されます。

クライアントがオブジェクトに対して JNDI 検索を実行すると、ネームサービスは、特定のサーバーインスタンスに関連付けられた InitialContext (IC) オブジェクトを作成します。それ以降、その IC オブジェクトを使用して作成された検索要求はすべて、同じサーバーインスタンスに送信されます。その InitialContext を使用して検索された EJBHome オブジェクトはすべて、同じターゲットサーバーにホストされます。また、それ以降に取得された Bean 参照もすべて、同じターゲットホスト上に作成されます。InitialContext オブジェクトの作成時に、ライブターゲットサーバーのリストがすべてのクライアントによってランダムに選択されるため、これにより負荷分散が効果的に実現されます。ターゲットサーバーインスタンスが停止すると、検索または EJB メソッド呼び出しは、別のサーバーインスタンスに処理が引き継がれます。

RMI-IIOP 負荷分散とフェイルオーバーは、透過的に発生します。アプリケーションの配備中に、特別な手順は必要ありません。ただし、クラスタに新しいインスタンスを追加したり削除したりしても、そのクラスタに関する既存のクライアントの表示は更新されません。それには、クライアント側で、端点の一覧を手動で更新する必要があります。

要件

Sun Java System Application Server Enterprise Edition は、RMI-IIOP 上で、リモート EJB 参照と NameService オブジェクトの高可用性を提供します。それには、次のすべての要件を満たしている必要があります。

Application Server は、Application Server に配備された EJB コンポーネントにアクセスしている次の RMI-IIOP クライアントに対する負荷分散をサポートしています。


注 –

Application Server は、SSL (Secure Socket Layer) 上の RMI-IIOP 負荷分散とフェイルオーバーをサポートしていません。


アルゴリズム

Application Server は、ランダム化とラウンドロビンのアルゴリズムを使用して、RMI-IIOP 負荷分散とフェイルオーバーを実現しています。

RMI-IIOP クライアントは最初に新しい InitialContext オブジェクトを作成すると、そのクライアントで利用可能な IIOP 端点のリストが、ランダムに選ばれます。その InitialContext オブジェクトに対して、ロードバランサは、ランダムに選択されたリストの最初の端点に検索要求とほかの InitialContext 操作を命令します。最初の端点が利用できない場合、リストの 2 番目の端点が使用され、以下同様です。

クライアントが続けて新しい InitialContext オブジェクトを作成するたびに、端点リストがローテーションし、異なる IIOP 端点が InitialContext 操作で使われます。

InitialContext オブジェクトによって確保される参照から Beans を入手または作成する場合、それらの Beans は、InitialContext オブジェクトに割り当てられた IIOP 端点を処理する Application Server インスタンスで作成されます。それらの Beans に対する参照には、クラスタ内のすべての Application Server インスタンスの IIOP 端点アドレスが含まれます。

プライマリ端点は、Bean の検索または作成に使用される InitialContext 端点に対応する Bean 端点です。クラスタ内のほかの IIOP 端点は、代替端点として指定されています。Bean のプライマリ端点が利用できなくなると、その Bean での追加の要求は、代替端点の 1 つに処理が継続されます。

RMI-IIOP 負荷分散とフェイルオーバーは、ACC で動作しているアプリケーション、およびスタンドアロンの Java クライアントとともに動作するように設定できます。

アプリケーション例

次のディレクトリには、ACC とともに、または ACC なしで RMI-IIOP フェイルオーバーを使用する方法を示すサンプルアプリケーションが含まれています。

install_dir/samples/ee-samples/sfsbfailover

ACC とともに、または ACC なしでアプリケーションを実行する手順については、このサンプルに付属している index.html ファイルを参照してください。ee-samples ディレクトリには、サンプルを実行する環境を設定するための情報も含まれています。