Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun Java System Application Server Enterprise Edition 7 2004Q2 入門ガイド 

第 2 章
クラスタリングのシナリオ

この章では次の項目について説明します。


HTTP クラスタリングのシナリオ

次の図に、単純なクラスタリングのシナリオを示します。この例では、ロードバランサプラグインを持つ Web Server、HADB を使用して HTTP セッションデータを格納するように設定された 2 つの Sun Java System Application Server インスタンス、およびアプリケーションデータを格納するリモートデータベース管理システム (RDBMS) で構成されています。実際の配備とは異なる場合があることに注意してください。たとえば、ロードバランサプラグインの代わりにサードパーティのロードバランサを使用することもできます。

図 2-1 クラスタリングのシナリオの例

クラスタの例

HTTP 要求が処理される手順は、次のとおりです。

  1. 要求を受信したクライアントは、HTTP 要求を Web サーバーが処理する URL に送信します。この Web サーバーは、ロードバランサプラグインが着信 HTTP 要求を処理できるように設定されています。
  2. 続いて、ロードバランサプラグインが、クラスタ内のいずれかの Sun Java System Application Server インスタンスに、この要求を転送します。プラグインは、ターゲットインスタンスを特定するためにスティッキーなラウンドロビンのロードバランサを使用します。
  3. ターゲットインスタンスは、ロードバランサプラグインから転送された要求を受信し、HTTP セッションデータを HADB、J2EE アプリケーションデータを RDBMS に格納して、HTTP セッションを開始します。アプリケーションによるクライアントの処理の進捗状況に従って、HTTP セッションデータが更新されて HADB に格納され、RDBMS のアプリケーションデータが更新されます。
  4. インスタンスに、システムクラッシュなどの問題が発生すると、ロードバランサは、インスタンスが要求への応答を中止したことを検出します。それ以降に要求が届くと、ロードバランサは、その要求をクラスタ内の正常なインスタンスに転送します。
  5. 新しいターゲットインスタンスは引き継いだ HTTP セッション情報を HADB から受信し、クライアントの要求に対する応答を続けます。このため、クライアントはセッションデータを失うことなく HTTP セッションを完了できます。

Sun Java System Application Server の配備のシナリオの詳細については、『Sun ONE Application Server System Deployment Guide』を参照してください。


RMI/IIOP クラスタリングのシナリオ

Sun Java System Application Server は、RMI/IIOP パス上でロードバランスおよびフェイルオーバーのメカニズムを使用して、可用性の高い J2EE アプリケーションを実現します。

高可用性を設定するには、RMI-IIOP 要求の処理に使用される、IIOP リスナーを組み込んだ IIOP クラスタ内に、Application Server インスタンスを構成する必要があります。IIOP クラスタに組み込まれた IIOP リスナーは、IIOP エンドポイントと呼ばれます。

以降の項では、RMI/IIOP パス上で、J2EE アプリケーションに対してロードバランス (クライアント側の設定) と高可用性 (サーバー側の変更) を有効にするために必要な変更について説明します。

サーバー側の設定

IIOP 要求のフェイルオーバーを有効にするには、Sun Java System Application Server 内に IIOP クラスタを構築するように IIOP エンドポイントを設定する必要があります。IIOP エンドポイントは、管理コンソールかコマンド行インタフェースのいずれかを使用して定義します。

RMI/IIOP 要求のフェイルオーバー先の、クラスタ内の非 SSL エンドポイントをすべて定義します。availability-service 要素の iiop-cluster プロパティで、IIOP エンドポイントを定義します。フェイルオーバーを有効にするため、availability-enabled="true" を必ず設定します。

次の例では、server.xml ファイルの IIOP クラスタ設定プロパティを示しています。

<availability-service availability-enabled="true">

<iiop-cluster>

<iiop-server-instance name=server1>

<iiop-endpoint id=s1_ep1 host=trident port=3700 />

<iiop-endpoint id=s1_ep2 host=trident port=3800 />

<iiop-endpoint id=s1_ep3 host=trident port=3900 />

</iiop-server-instance>

<iiop-server-instance name=server2>

<iiop-endpoint id=s2_ep1 host=jupiter port=4700 </>

<iiop-endpoint id=s2_ep2 host=jupiter port=4800 />

<iiop-endpoint id=s2_ep3 host=jupiter port=4900 />

</iiop-server-instance>

</iiop-cluster>

</availability-service>

クライアント側の設定

RMI/IIOP 要求のロードバランスを有効にするには、クライアントアプリケーションを設定する必要があります。次の 2 つのタイプの RMI/IIOP クライアントについて、ロードバランスがサポートされています。

スタンドアロンのクライアント

スタンドアロンのクライアントでロードバランス機能を有効にするには、JNDI 環境プロパティまたはシステムプロパティで、次のプロパティを定義する必要があります。

  1. 次の JVM プロパティを指定して、ORB を設定します。
  2. com.sun.CORBA.connection.ORBSocketFactoryClass=com.sun.enterprise.iiop.EEIIOPSocketFactory
    org.omg.PortableInterceptor.ORBInitializerClass.com.sun.enterprise.iiop.EEORBInitializer

  3. appserv-rt.jarappserv-rt-ee.jar へのクラスパスを設定します。これらの jar ファイルは install_dir/lib ディレクトリにあります。
  4. InitialContext のインスタンス化の前に、S1ASCtxFactory クラスの次のプロパティを使用します。
  5. Properties env = new Properties();

    env.put("java.naming.factory.initial", "com.sun.appserv.naming.S1ASCtxFactory");

    env.put("com.sun.appserv.iiop.endpoints"."trident:3600, exodus:3700");

    env.put("com.sun.iiop.loadbalancingpolicy", "ic-based");

    //create an initial naming context
    Context initial = new InitialContext(env);

このクライアントコードにより、新しい InitialContext(env) が呼び出され、JNDI 初期コンテキストオブジェクトがインスタンス化されます。ただし、env は、JNDI SPI プロパティのリストです。

ACC クライアント

ACC クライアントでロードバランス機能とフェイルオーバー機能を有効にするには、sun-acc.xml で次のプロパティを定義する必要があります。

sun-acc.xml ファイルで、ロードバランスプロパティを定義して、高可用性 ACC クライアントを有効にします。これらのプロパティは、sun-acc.xml ファイルで、プロパティ要素として定義されます。

次に例を示します。



前へ      目次      索引      次へ     


Copyright 2004 Sun Microsystems, Inc. All rights reserved.