前へ 目次 索引 次へ |
Sun Java System Application Server Enterprise Edition 7 2004Q2 入門ガイド

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

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

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

> ##

> 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 クライアントについて、ロードバランスがサポートされています。

> - スタンドアロンのクライアント
> - ACC クライアント

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

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

> - java.naming.factory.initial

> このプロパティを com.sun.appserv.naming.S1ASCtxFactory に設定します。

> - com.sun.appserv.iiop.endpoints

> server.xml で定義した IIOP エンドポイントのリストを指定します。

> - com.sun.appserv.iiop.loadbalancingpolicy

> エンドポイントが指定されている場合、このプロパティが、ロードバランスポリシーを指定するために使用されます。このプロパティの定義に使用される値は、JNDI 初期コンテキストに基づきます。

> RMI/IIOP クライアントが、リモートオブジェクトで、InitialContext 検索を呼び出すと、Application Server インスタンス (IIOP クラスタの一部) がランダムに選ばれて、Bean を作成します。この InitialContext を使用した以降のすべての操作は、同じ Application Server インスタンスに割り当てられるか、スタックされます。

> RMI/IIOP クライアントにロードバランス機能を実装するには、次の手順を行います。

> 1. 次の JVM プロパティを指定して、ORB を設定します。

> com.sun.CORBA.connection.ORBSocketFactoryClass=com.sun.enterprise.iiop.EEIIOPSocketFactory
> org.omg.PortableInterceptor.ORBInitializerClass.com.sun.enterprise.iiop.EEORBInitializer

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

> 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 で次のプロパティを定義する必要があります。

> - com.sun.appserv.iiop.endpoints
> - com.sun.appserv.iiop.loadbalancingpolicy

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

> 次に例を示します。

> <client-container>

> <target-server name="qasol-e1" address="qasol-e1" port="3700">

> <property name="com.sun.appserv.iiop.loadbalancingpolicy" value="ic-based" />

> <property name="com.sun.appserv.iiop.endpoints" value="qasol-e1:3700,jupiter:3800"/>

> </client-container>

> 前へ 目次 索引 次へ

> Copyright 2004 Sun Microsystems, Inc. All rights reserved.