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

- Previous: 第 9 章 Java Message Service 負荷分散とフェイルオーバー
- Next: RMI-IIOP 負荷分散とフェイルオーバーの設定

# 概要

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` オブジェクトの高可用性を提供します。それには、次のすべての要件を満たしている必要があります。

- 配備に、2 つ以上のアプリケーションサーバーインスタンスのクラスタが含まれていること。

- J2EE アプリケーションが、負荷分散に関わるすべてのアプリケーションサーバーインスタンスとクラスタに対して配備されていること。

- RMI-IIOP クライアントアプリケーションで、負荷分散が有効であること。

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

- アプリケーションクライアントコンテナ (ACC) で動作している Java アプリケーション。「アプリケーションクライアントコンテナ用に RMI-IIOP 負荷分散を設定するには」を参照してください。

- ACC で実行されていない Java アプリケーション。「スタンドアロンのクライアント用に 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` ディレクトリには、サンプルを実行する環境を設定するための情報も含まれています。

- Previous: 第 9 章 Java Message Service 負荷分散とフェイルオーバー
- Next: RMI-IIOP 負荷分散とフェイルオーバーの設定

- © 2010, Oracle Corporation and/or its affiliates