ヘッダーをスキップ

Oracle Application Server 高可用性ガイド
10gリリース3(10.1.3.1.0)

B31835-01
目次
目次
索引
索引

戻る 次へ

3 アクティブ/アクティブ・トポロジ

この章では、アクティブ/アクティブ・トポロジについて説明します。この章の項は次のとおりです。

3.1 アクティブ/アクティブ・トポロジについて

アクティブ/アクティブ・トポロジは、単一インスタンスよりも優れたスケーラビリティと可用性を実現する冗長なOracle Application Serverインスタンスで構成されています。アクティブ/アクティブ・トポロジを使用すると、単一インスタンスで発生するシングル・ポイント障害を回避できます。単一のOracle Application Serverインスタンスでは、単一ホストのリソースを利用しますが、Oracle Application Serverインスタンスのクラスタでは複数のホストにわたって、多数のCPUにアプリケーションの実行を分散できます。単一のOracle Application Serverインスタンスは、ホストおよびオペレーティング・システムの障害に対して脆弱ですが、アクティブ/アクティブ・トポロジではオペレーティング・システムまたはホストの損失が発生しても引き続き機能します。クライアントがこれらの障害の影響を受けることはありません。

アクティブ/アクティブ・トポロジでは、すべてのインスタンスが同時にアクティブになります。これは、一度に1つのみのインスタンスがアクティブになるアクティブ/パッシブ・トポロジとは異なります。

アクティブ/アクティブ・トポロジのノードは、ハードウェア・クラスタには含まれていません。

ロード・バランサの要件

アクティブ/アクティブ・トポロジではロード・バランサを使用して、トポロジ内のいずれかのOracle Application Serverインスタンスにリクエストを送信します。つまり、Oracle Application Serverインスタンスの前にはロード・バランサが配置されています。

ロード・バランサは、HTTPおよびHTTPSトラフィック用の仮想サーバー名を使用して構成します。クライアントはリクエストの中でこれらの仮想サーバー名を使用します。ロード・バランサは、使用可能なOracle Application Serverインスタンスにリクエストを送信します。

ロード・バランサに必要な機能の一覧は、第2.5項「外部ロード・バランサ」を参照してください。

アクティブ/アクティブ・トポロジの図

次の図は、2つのアクティブ/アクティブ・トポロジを示しています。これらのトポロジの違いは、Oracle HTTP ServerとOC4Jを同じOracleホームにインストールするか、個別のOracleホームにインストールするかです。

図3-1は、Oracle HTTP ServerとOC4Jが同じOracleホームにインストールされているアクティブ/アクティブ・トポロジを示しています。図3-2は、Oracle HTTP ServerとOC4Jが個別のOracleホームにインストールされているアクティブ/アクティブ・トポロジを示しています。

図3-1    同じOracleホームにOracle HTTP ServerとOC4Jがインストールされているアクティブ/アクティブ・トポロジ


画像の説明

図3-2    個別のOracleホームにOracle HTTP ServerとOC4Jがインストールされているアクティブ/アクティブ・トポロジ


画像の説明

3.1.1 アクティブ/アクティブ・トポロジのOracleAS Cluster

アクティブ/アクティブ・トポロジ内のすべてのOracle Application Serverインスタンスは、同じクラスタに属しています。Oracle HTTP Serverは、アプリケーションのリクエストを、同じクラスタに属しているOC4Jインスタンスのみに転送します。

クラスタ内のインスタンスは、次の方法のいずれかを使用してグループ化できます。

また、OracleAS Clusterを使用すると、一部のopmnctlコマンドで@clusterパラメータを使用できるようになります。@clusterパラメータを使用するコマンドは、クラスタ内のすべてのインスタンスに適用されます。たとえば、@clusterパラメータを使用して、クラスタ内のすべてのインスタンスのコンポーネントをすべて起動できます。

クラスタ内のOC4Jインスタンスには、次の特徴があります。

詳細は、『Oracle Containers for J2EE構成および管理ガイド』の「クラスタの構成と管理」を参照してください。

3.1.2 アクティブ/アクティブ・トポロジにおけるアプリケーションレベルのクラスタリング

OC4Jで実行されているステートフルWebアプリケーションとステートフル・セッションEJBに対し、クライアントは一連のHTTPリクエストとレスポンスにおいて同じOC4Jプロセスを使用して通信します。ただし、アプリケーションを実行しているOC4Jプロセスが停止またはハングするか、ノードに障害が発生した場合、クライアントのリクエストに関連付けられている状態は失われます。

このようなソフトウェアやハードウェアの障害から保護するには、次の手順を実行する必要があります。

OracleAS Cluster(OC4J)のアプリケーションレベルのクラスタリングでは、OC4Jプロセスがセッション状態を互いにレプリケートします。この構成では、異なるOracle Application Serverインスタンスで実行している複数のOC4Jプロセス間で状態をレプリケートすることにより、フェイルオーバーと高可用性が実現します。障害が発生した場合、Oracle HTTP Serverは、OracleAS Cluster(OC4J)内のアクティブなOC4Jプロセスにリクエストを転送します。

ノードの障害などのハードウェア障害から保護するには、1つのOracleAS Cluster(OC4J)内の各ノード上のOC4Jインスタンスをクラスタリングします。1つのOracleAS Cluster(OC4J)内の異なるノードで実行されるOC4Jプロセスは、セッションの状態情報を共有できます。OC4Jインスタンスに障害が発生するか、使用不可になると、Oracle HTTP Serverは使用可能なOC4Jプロセスにリクエストを転送します。Oracle HTTP Serverは、クラスタ内のアクティブな(動作中の)OC4Jプロセスにのみリクエストを転送します。

OracleAS Cluster(OC4J)をmod_oc4jリクエスト・ルーティングとともに使用すると、ソフトウェアまたはハードウェアに問題が発生したときにステートフル・フェイルオーバーを利用できます。たとえば、OracleAS Cluster(OC4J)の一部であるOC4Jプロセスで障害が発生すると、OPMNによってこの障害がmod_oc4jに通知され、リクエストはmod_oc4jによって同じクラスタ内の別のOC4Jプロセスにルーティングされます。クライアントのセッション状態は維持されます。サービスの損失はクライアントからは見えません。

図3-3は、2つのOracle Application Serverインスタンスに構成されているOracleAS Cluster(OC4J)を示しています。OC4Jプロセスは各インスタンスで実行されています。Oracle Application Serverのインスタンス1に障害が発生した場合、インスタンス2のOC4Jプロセスはセッション状態情報を含んでいるので、リクエストを処理できます。この構成により、OracleAS Cluster(OC4J)におけるWebアプリケーションのセッション状態レプリケーションのフェイルオーバーが可能になります。

図3-3    OracleAS Cluster(OC4J)におけるWebアプリケーションのセッション状態のフェイルオーバー


画像の説明

必要なインスタンスとプロセスの最小数

最小のOC4Jプロセス数を維持しつつ、ソフトウェアまたはハードウェア障害から保護するには、同じクラスタ内に少なくとも2つのOC4Jプロセスを構成する必要があります。たとえば、インスタンス1とインスタンス2の2つのOracle Application Serverインスタンスがある場合は、それぞれのインスタンスに2つのOC4Jプロセスを構成できます。この構成では、ステートフル・セッションのアプリケーションがハードウェアおよびソフトウェア障害から保護され、次のいずれかのタイプの障害が発生しても、クライアントの状態は維持されます。

3.1.2.1 OracleAS Cluster(OC4J)によるステートフル・セッションEJBの状態レプリケーション


注意

高可用性を目的とするEJBレプリケーション(OracleAS Cluster(OC4J-EJB))の使用は、OracleAS Cluster(OC4J)に依存せず、OracleAS Cluster(OC4J)の内部または外部にノード間でインストールされた複数のOracle Application Serverインスタンスを使用できます。 


OracleAS Cluster(OC4J-EJB)では、ステートフル・セッションEJBの高可用性が実現します。EJBクラスタでは、同じマルチキャスト・アドレス経由で通信する複数のOC4Jプロセス間でこれらのEJBをフェイルオーバーできます。このように、ステートフル・セッションEJBでレプリケーションを使用すると、プロセスとノードの障害から保護し、Oracle Application Serverで実行されているステートフル・セッションEJBの高可用性を実現できます。

詳細は、『Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド』の第24章「OC4JのEJBアプリケーション・クラスタリング・サービスの構成」を参照してください。

3.1.3 アクティブ/アクティブ・トポロジのOracle Application Serverインスタンスのプロパティ

ロード・バランサはトポロジ内の任意のOracle Application Serverインスタンスにリクエストを送信できるため、どのインスタンスがリクエストを処理してもクライアントが同じレスポンスを取得するように、各インスタンスの構成を同じにする必要があります。これには次の作業が含まれます。

3.1.4 グループについて

OC4Jインスタンスをグループに配置することで、いくつかの一般的な管理タスクをグループ・レベルで実行できます。たとえば、Application Server Controlの「グループ」ページで、グループ内のすべてのメンバーに対して次の作業を実行できます。

「グループ」ページを表示するには、「クラスタ・トポロジ」ページの「グループ」セクションでグループ名をクリックします。

各OC4Jインスタンスは、グループに属している必要があります。Oracle Application Serverをインストールすると、"default_group"というグループが自動的に作成されます。

図3-4に、Oracle Application Serverの3つのインスタンスを示します。これらOracle Application Serverの各インスタンスには、"home"というOC4Jインスタンスがあり、"Apps"というグループに属しています。この図は、3つのOracle Application Serverインスタンスのうちの2つに"sales"というOC4Jインスタンスが存在することも示しており、これらのOC4Jインスタンスは"finance"というグループに属しています。

図3-4    OC4Jインスタンスのグループ


画像の説明

グループには、クラスタ内のすべてのOracle Application ServerインスタンスのOC4Jインスタンスが含まれている必要はありません。たとえば、図3-4では、"sales" OC4Jインスタンスは2つのOracle Application Serverインスタンスにのみ存在します。これは有効です。

Oracle Application Serverでは、グループ内のインスタンスを同一に構成する必要はありません。ただし、一部の構成(データソース、JMSリソース、セキュリティ・プロバイダ設定など)は同一にして、どのインスタンスがリクエストを処理しても、同じレスポンスがアプリケーションから返されるようにしてください。

グループの詳細は、Application Server Controlのオンライン・ヘルプにあるOC4Jインスタンスとグループの作成のガイドラインに関する項を参照してください。

3.1.4.1 グループの作成

グループは、Application Server Controlを使用して作成できます。「クラスタ・トポロジ」ページには「グループ」セクションがあり、グループの起動、停止、削除、作成などの操作を実行できます。

OC4Jインスタンスの作成時にグループを作成することもできます。Application Server Controlを使用してOC4Jインスタンスを作成する場合、OC4Jインスタンス名の入力に加えて、この新しいOC4Jインスタンスがどのグループに属しているかを指定する必要があります。既存のグループまたは新しいグループのいずれかを指定できます。第3.1.5.2項「追加のOC4Jインスタンスの作成」を参照してください。

createinstanceコマンドを使用してOC4Jインスタンスを作成する場合は、groupNameパラメータでグループの名前を指定します。createinstanceコマンドについては、第3.1.5.2項「追加のOC4Jインスタンスの作成」を参照してください。

グループの作成手順、OC4Jインスタンスの作成手順や削除手順など、グループの詳細は、『Oracle Containers for J2EE構成および管理ガイド』の第8章「クラスタおよびOC4Jグループの構成と管理」、Oracle Application Serverクラスタ内のOC4Jグループの作成と管理に関する項を参照してください。

3.1.4.2 追加のOC4Jインスタンスの作成

追加のOC4Jインスタンスを作成するには、Application Server ControlまたはORACLE_HOME/bin/createinstanceコマンドを使用します。

Application Server Controlの使用

「クラスタ・トポロジ」ページでOracle Application Serverインスタンスの名前をクリックすると、「Application Server: instance_name」ページが表示されます。「OC4Jインスタンスの作成」ボタンをクリックして、「OC4Jインスタンスの作成」ページを表示します(図3-5)。

「OC4Jインスタンスの作成」ページでは、作成するOC4Jインスタンスの名前と、そのOC4Jインスタンスが属するグループを入力します。既存のグループまたは新しいグループのいずれかを指定できます。

図3-5    「OC4Jインスタンスの作成」ページ


画像の説明

createinstanceコマンドの使用

追加のOC4Jインスタンスを作成するには、ORACLE_HOME/bin/createinstanceコマンドを使用します。構文は次のとおりです。

createinstance -instanceName name [-port httpPort] [-groupName groupName]

nameには、作成するOC4Jインスタンスの名前を指定します。

オプションのportパラメータは、Oracle Application ServerインスタンスにOracle HTTP Serverが含まれていない場合に役立ちます。HTTPポートを設定すると、新しいOC4Jインスタンスのホームページに直接アクセスできるようになります。

オプションのgroupNameパラメータを使用すると、指定したグループに新しいOC4Jインスタンスを追加できます。このパラメータを指定しない場合、インスタンスはdefault_groupグループに追加されます。指定したグループが存在しない場合は、そのグループが作成されます。

たとえば、OC4Jインスタンス"sales"を作成して"finance"グループに追加するには、次のコマンドを使用します。

createinstance -instanceName sales -groupName finance

コマンドによって、"sales"インスタンスのoc4jadminユーザー・パスワードを設定するように求められます。このパスワードは、"home"インスタンスのパスワードとは異なるものに設定できますが、お薦めできません。パスワードを"home"インスタンスのoc4jadminユーザー・パスワードと同じものに設定して、OPMNの問題を回避してください。

パスワードの詳細は、『Oracle Containers for J2EE構成および管理ガイド』の第8章「クラスタの構成と管理」、createinstanceユーティリティによるOC4Jインスタンスの作成に関する項を参照してください。

このコマンドによってインスタンスが作成されますが、起動はされません。起動はApplication Server Controlコンソールまたはopmnctlコマンドで行います。

インスタンスを作成したら、OPMNをリロードし、新しいインスタンスが認識されるようにします。

opmnctl reload

createinstanceコマンドの詳細は、『Oracle Containers for J2EE構成および管理ガイド』の第8章「クラスタの構成と管理」、追加のOC4Jインスタンスの作成と管理に関する項を参照してください。

3.1.4.3 グループ内のインスタンスの管理

OC4Jインスタンスのグループは、一括管理することも、個別に管理することもできます。すべてのアプリケーションとインスタンスは、一度にまたは個別に起動および停止でき、またアプリケーションは、グループ内のすべてのインスタンスまたは一部のインスタンスにデプロイ、再デプロイ、アンデプロイすることもできます。

グループ内の一部のインスタンスのみにアプリケーションをデプロイすることはお薦めできません。グループ内のすべてのインスタンスに同じアプリケーションをデプロイするようにしてください。

グループは、Application Server Controlコンソールまたはadmin_client.jarを使用して管理できます。Application Server Controlコンソールでは、グループに対して次のような操作を実行できます。

表3-1    Application Server Controlコンソールを使用した、グループに対する操作の実行 
操作  手順 

グループ内のアプリケーションの起動、停止、デプロイ、アンデプロイ、再デプロイ 

  1. Application Server Controlコンソールの「クラスタ・トポロジ」ページで、下にスクロールして「グループ」セクションを表示します。

  2. 管理するグループをクリックします。「グループ: <グループ名>」ページが表示されます。

  3. アプリケーション」タブを選択します。

  4. 起動、停止、アンデプロイ、または再デプロイするアプリケーションを選択します。

  5. 起動」、「停止」、「デプロイ」、「アンデプロイ」または「再デプロイ」ボタンをクリックします。

 

JDBCリソースとJMSプロバイダの構成 

  1. Application Server Controlコンソールの「クラスタ・トポロジ」ページで、下にスクロールして「グループ」セクションを表示します。

  2. 管理するグループをクリックします。「グループ: <グループ名>」ページが表示されます。

  3. 管理」タブを選択します。

  4. JDBCリソースを構成するには、JDBC Resources行の「タスクに移動」アイコンをクリックします。「JDBCリソース」ページが表示されます。JDBCの詳細は、『Oracle Containers for J2EEサービス・ガイド』の「データソース」を参照してください。

    JMS宛先を構成するには、JMS宛先行の「タスクに移動」アイコンをクリックします。「OracleAS JMS」ページが表示されます。JMSの詳細は、『Oracle Containers for J2EEサービス・ガイド』の「Java Message Service(JMS)」を参照してください。

 

OC4Jインスタンスの個別管理 

  1. Application Server Controlコンソールの「クラスタ・トポロジ」ページで、下にスクロールして「グループ」セクションを表示します。

  2. 管理するグループをクリックします。「グループ: <グループ名>」ページが表示されます。

  3. OC4Jインスタンス」タブを選択します。グループ内のインスタンスがすべて表示されます。いずれかのインスタンスをクリックすると、そのインスタンスを管理できます。

    注意: インスタンスで実行する操作は、そのインスタンスのみに影響します。操作はグループ内のすべてのインスタンスには適用されません。

 

グループとしてのOC4Jインスタンスの管理 

  1. Application Server Controlコンソールの「クラスタ・トポロジ」ページで、「クラスタMBeanブラウザ」リンクをクリックします。

  2. 左側の「J2EEServerGroup」を開きます。

  3. 「J2EEServerGroup」で、管理するグループをクリックします。

  4. 右側の「操作」タブをクリックします。

  5. グループ内のOC4Jインスタンスを起動または停止するには、右側の「起動」または「停止」をクリックします。

  6. 起動操作」をクリックして操作を実行します。

 

3.1.4.4 admin_client.jarを使用した、グループへのアプリケーションのデプロイ

admin_client.jarユーティリティを使用して、アプリケーションをグループにデプロイできます。構文は次のとおりです。

> cd ORACLE_HOME/j2ee/home
> java admin_client.jar
             deployer:cluster:opmn://<host>:<opmnPort>/<groupName>
             <adminID> <adminPassword>
             -deploy -file <pathToArchiveFile> -deploymentName <appName>

<host>には、グループ内の任意のホストを指定できます。

<opmnPort>には、OPMNがリスニングするポートを指定します。このポートは、opmn.xmlファイルに記載されています。

<groupName>には、グループの名前を指定します。これは、OC4Jインスタンスの名前(homeなど)です。

<adminID><adminPassword>には、管理者のIDとパスワードを指定します。通常、adminIDはoc4jadminです。


注意

グループ内のすべてのインスタンスに対してデプロイを有効にするには、管理者のパスワードがグループ内のすべてのインスタンスに対して同じである必要があります。 


<pathToArchiveFile>には、デプロイするEAR、WAR、またはJARファイルへのフルパスを指定します。

<appName>には、アプリケーション名を指定します。

デプロイについては、コマンドラインで指定できるオプションが他にもあります。詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。

3.1.5 Oracle HTTP ServerがリクエストをOC4Jにルーティングする方法

Oracle HTTP Serverでは、J2EEアプリケーションに対するリクエストを受信すると、そのリクエストをOracle HTTP Server内にあるmod_oc4jモジュールに転送します。ロード・バランシング・アルゴリズムに従って、mod_oc4jではリクエストを同じクラスタ内のOC4Jインスタンスに転送します。図3-6を参照してください。

リクエストの分散にmod_oc4jが使用するデフォルトのロード・バランシング・アルゴリズムは、単純なラウンド・ロビン・アルゴリズムです。別のアルゴリズムを使用する場合は、mod_oc4j.confファイルにディレクティブを設定します。詳細は、第3.2.12項「mod_oc4jのロード・バランシング・オプションの設定」を参照してください。

セッションの一部であるリクエストは、同じOC4Jインスタンスに送信されます。最初のリクエスト後にOC4Jインスタンスが使用不可になった場合は、リクエストを処理する別のインスタンスがmod_oc4jによって検索され、同じセッション内の後続リクエストがそのインスタンスに送信されます。

図3-6    OracleAS Clusterとロード・バランシング・ディレクティブ


画像の説明

3.1.6 アクティブ/アクティブ・トポロジでのOracle Identity Managementの使用

Oracle Application Server 10gリリース3(10.1.3.1.0)にはOracle Identity Managementは含まれていませんが、Oracle Application Server 10gリリース3(10.1.3.1.0)を、リリース9.0.4、リリース2(10.1.2)またはリリース10.1.4のOracle Identity Managementとともに使用することはできます。

Oracle Internet Directory、OracleAS Single Sign-On、OracleAS Certificate Authority、Oracle Directory Integration and ProvisioningなどのOracle Identity Managementサービスが必要な場合は、アクティブ/アクティブ・トポロジをOracle Identity Managementに関連付けることができます。

リリース3(10.1.3.1.0)のアクティブ/アクティブ・トポロジとOracle Identity Managementインスタンスは個別にインストールします。インストール後に、Application Server Controlコンソールを使用してリリース3(10.1.3.1.0)のインスタンスをOracle Identity ManagementのOracle Internet Directoryに関連付けます。

Oracle Identity Managementをリリース3(10.1.3.1.0)のインスタンスに関連付ける方法の詳細は、『Oracle Application Server管理者ガイド』の「10.1.4および10.1.2のOracle Identity Managementを使用するためのインスタンスの構成」を参照してください。

高可用性環境では、高可用性を実現するために、リリース3(10.1.3)のインスタンスとOracle Identity Managementインスタンスの両方が必要になります。このガイドでは、リリース3(10.1.3)のインスタンス用の高可用性についてのみ説明します。Oracle Identity Managementの高可用性の詳細は、使用しているOracle Identity Managementリリースの『Oracle Application Server高可用性ガイド』を参照してください。

図3-7は、リリース2(10.1.2)のOracle Identity Managementを使用して実行されているアクティブ/アクティブ・トポロジのOracle Application Server 10gリリース3(10.1.3)のインスタンスを示しています。

図3-7    Oracle Identity Managementを使用したOracle Application Server中間層


画像の説明

3.1.7 アクティブ/アクティブ・トポロジでのOracle HTTP Server 10.1.2の使用

アクティブ/アクティブ・トポロジでは、リリース3(10.1.3.1.0)のOracle HTTP Serverを使用するかわりに、リリース2(10.1.2)のOracle HTTP Serverを使用できます。これは次のような理由で行います。

リリース2(10.1.2)のOracle HTTP Serverは、分散アクティブ/アクティブ・トポロジ(図3-2)に対してのみ使用できます。

3.1.8 アクティブ/アクティブ・トポロジでのOracleAS Web Cacheリリース2(10.1.2)の使用

図3-7に示すように、Oracle Application Server 10gリリース3(10.1.3)で、リリース2(10.1.2)のOracleAS Web Cacheを使用できます。

OracleAS Web Cacheは、リバース・プロキシ・サーバーとして使用します。リバース・プロキシ・サーバーは、OracleAS Web Cacheの1つのインスタンスまたはクラスタ(OracleAS Web Cacheクラスタ)として構成されている複数のインスタンスで構成できます。

リバース・プロキシ・サーバーとしてのOracleAS Web Cache(単一インスタンスまたはクラスタ)の構成方法の詳細は、『Oracle Application Server管理者ガイド』の「リバース・プロキシとしての10.1.2 OracleAS Web Cacheの構成」を参照してください。

3.2 アクティブ/アクティブ・トポロジの管理

この項では、アクティブ/アクティブ・トポロジの管理に必要な一般的な手順について説明します。

3.2.1 OracleAS Clusterの設定

OracleAS Clusterの作成には、いくつかの方法があります。この項では、2つの方法についてのみ説明します。

その他の方法については、『Oracle Containers for J2EE構成および管理ガイド』の「クラスタの構成と管理」を参照してください。

3.2.1.1 動的検出方法

この方法では、クラスタ内の各Oracle Application Serverインスタンスに対して同じマルチキャスト・アドレスとポートを定義します。この方法の利点は、クラスタ内の各Oracle Application Serverインスタンスの名前を指定する必要がないことです。クラスタのインスタンスの追加または削除は、マルチキャスト・アドレスおよびポートを編集することで実行できます。

  1. 同じクラスタにグループ化するOracle Application Serverインスタンスごとに、次のコマンドを実行します。

    opmnctl config topology update discover="*<multicastAddress>:<multicastPort>"
    
    

    multicastAddressは、このクラスタに使用するマルチキャスト・アドレスを指定します。マルチキャスト・アドレスは、224.0.1.0〜239.255.255.255の有効なアドレス範囲内で指定する必要があります。コマンドでは、マルチキャスト・アドレスの前に*文字を付けます。

    multicastPortには、未使用のポート番号を指定できます。

    例:

    > ORACLE_HOME/opmn/bin/opmnctl config topology update
                             discover="*225.0.0.20:8001"
    
    

    分散インストール(異なるOracleホームにOracle HTTP ServerおよびOC4Jがインストールされている場合)では、すべてのOracle Application Serverインスタンスを同じクラスタにクラスタリングする必要があります。すべてのインスタンスには同じマルチキャストIPとポートを使用する必要があります。

  2. opmnctl config topology updateコマンドを実行するOracle Application Serverインスタンスごとにopmnctl reloadコマンドを実行し、更新されたopmn.xmlファイルのOPMNによる読取りを強制します。

    > ORACLE_HOME/opmn/bin/opmnctl reload
    
    

3.2.1.2 検出サーバー方法

マルチキャスト方法を使用しない場合は、Oracle Application Serverインスタンスを実行するノードの名前を各インスタンスのopmn.xmlファイルで指定して、クラスタを定義できます。

例: 4つのインスタンス(inst1.node1.mycompany.com、inst2.node2.mycompany.com、inst3.node3.mycompany.com、inst4.node4.mycompany.com)をクラスタリングする場合は、次の手順を実行します。

  1. 検出サーバーとして機能するインスタンスを少なくとも1つ指定します。検出サーバーは、クラスタのトポロジを保持します。

    この例では、inst1.node1.mycompany.comとinst2.node2.mycompany.comがクラスタの検出サーバーになることを前提としています。

    分散インストール(異なるOracleホームにOracle HTTP ServerおよびOC4Jがインストールされている場合)では、Oracle HTTP ServerまたはOC4Jのどちらを実行するインスタンスでも検出サーバーとして機能できます。

  2. クラスタ内のすべてのインスタンス用のopmn.xmlファイルで、検出サーバーを実行しているノード(この例ではnode1.mycompany.comとnode2.mycompany.com)を指定します。

    この例では、次の行を含むようにopmn.xmlファイルを変更します。

    <notification-server>
       <topology>
          <discover
              list="node1.mycompany.com:6201,node2.mycompany.com:6201"/>
       </topology>
    ...
    </notification-server>
    
    

    6201は、通知サーバーがリスニングするポート番号を示します。この値はそのインスタンスのopmn.xmlファイルに含まれています。

    複数の検出サーバーを使用する場合は、これらをカンマで区切ります。

  3. すべてのインスタンスでopmnctl reloadを実行して、更新されたopmn.xmlファイルのOPMNによる読取りを強制します。

    > ORACLE_HOME/opmn/bin/opmnctl reload
    
    

3.2.2 マルチキャスト・レプリケーションの設定

マルチキャスト・レプリケーションは、デフォルトのレプリケーション・タイプです。マルチキャスト・レプリケーションを使用するようにアプリケーションを設定するには、空の<cluster/>タグをアプリケーションのorion-application.xmlファイルまたはグローバルのORACLE_HOME/j2ee/home/config/application.xmlファイルに追加します。次に、例を示します。

<orion-application ... >
   ...
   <cluster/>
</orion-application>

<cluster/>タグは、アプリケーションのデプロイ先のノードすべてに追加する必要があります。

デフォルトでは、マルチキャスト・レプリケーションには230.230.0.1のマルチキャスト・アドレスと45566のポートが使用されます。これらの値を変更する場合は、multicast要素のip属性とport属性に必要な値を指定します。たとえば次のコードでは、ip属性とport属性に、カスタマイズされた値が設定されています。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <multicast ip="225.130.0.0" port="45577" bind-addr="226.83.24.10"/>
      </protocol>
   </cluster>
</orion-application>

マルチキャスト・アドレスには、224.0.1.0〜239.255.255.255の範囲の値を指定する必要があります。

上のコードで使用されている他のタグと属性を次に説明します。

3.2.3 peer-to-peerレプリケーションの設定

Oracle Application Serverでは、動的と静的の2種類のpeer-to-peerレプリケーションをサポートしています。

動的なpeer-to-peerレプリケーション

動的なpeer-to-peerレプリケーションを指定するには、空の<opmn-discovery/>タグをアプリケーションのorion-application.xmlファイルまたはグローバルのORACLE_HOME/j2ee/home/config/application.xmlファイルに追加します。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <peer>
            <opmn-discovery/>
         </peer>
      </protocol>
   </cluster>
</orion-application>

OPMNによるクラスタ内のインスタンスの検出方法は、OracleAS Clusterの設定時に定義しました。詳細は、第3.2.1項「OracleAS Clusterの設定」を参照してください。

静的なPeer-to-Peerレプリケーション

静的なpeer-to-peerレプリケーションを指定するには、ホスト名のリストをアプリケーションのorion-application.xmlファイルまたはグローバルのORACLE_HOME/j2ee/home/config/application.xmlファイルの<node>要素に含めます。ノードごとにアクティブ/アクティブ・トポロジ内の別のノードを指定し、トポロジ内のすべてのノードが連鎖の中で接続されるようにします。たとえば、トポロジに3つのOracle Application Serverインスタンスがある場合、ノード1はノード2を指定し、ノード2はノード3を指定し、ノード3はノード1を指定できます。

例:

ノード1では、<node>タグによってノード2が指定されます。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <peer start-port="7900" range="10" timeout="6000">
            <node host="node2.mycompany.com" port="7900"/>
         </peer>
      </protocol>
   </cluster>
</orion-application>

ノード2では、<node>タグによってノード3が指定されます。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <peer start-port="7900" range="10" timeout="6000">
            <node host="node3.mycompany.com" port="7900"/>
         </peer>
      </protocol>
   </cluster>
</orion-application>

ノード3では、<node>タグによってノード1が指定されます。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <peer start-port="7900" range="10" timeout="6000">
            <node host="node1.mycompany.com" port="7900"/>
         </peer>
      </protocol>
   </cluster>
</orion-application>

これを実現する別の方法は、すべてのノードで同じノードを指定することです。3つのノードを含む例では、ノード1とノード2がノード3を指定し、ノード3がノード1またはノード2のどちらかを指定することもできます。

上の例で使用されているタグと属性を次に説明します。

次の点に注意してください。

3.2.4 データベースへのレプリケーションの設定

このレプリケーション・メカニズムでは、レプリケートされたデータはデータベースに保存されます。データベースはアプリケーションのorion-application.xmlファイルまたはグローバルのORACLE_HOME/j2ee/home/config/application.xmlファイルの<database>タグに指定します。次に、例を示します。

<orion-application ... >
   ...
   <cluster allow-colocation="false">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <database data-source="jdbc/MyOracleDS"/>
      </protocol>
   </cluster>
</orion-application>

data-source属性の値は、data-sources.xmlファイルに指定されているデータソースのjndi-nameに一致する必要があります。データソースの作成と使用の詳細は、『Oracle Containers for J2EEサービス・ガイド』を参照してください。

3.2.5 レプリケーション・ポリシーの設定

<replication-policy>タグの属性を使用すると、レプリケートするデータおよびデータをレプリケートする頻度を指定できます。

trigger属性

trigger属性は、レプリケーションを行う時期を指定します。表3-2では、この属性でサポートされている値について説明しています。

表3-2    trigger属性の値 
  HttpSession  ステートフル・セッションBean 

onSetAttribute 

HTTPセッション属性に行われた各変更を値の変更時にレプリケートします。プログラミングの観点では、レプリケーションは、setAttribute()HttpSessionオブジェクトに対して呼び出されるたびに行われます。

このオプションを使用すると、セッションで大きな変更が行われる場合、多くのリソースを消費することがあります。 

該当なし。 

onRequestEnd(デフォルト) 

HTTPセッション属性に行われた変更をすべてキューに格納し、HTTPレスポンスの送信直前にすべての変更をレプリケートします。 

各EJBメソッドの呼出し後にBeanの現在の状態をレプリケートします。状態を頻繁にレプリケートすることで、高い信頼性が得られます。 

onShutdown 

[Ctrl]+[C]などを使用してJVMが正常に終了されるたびに、HTTPセッションの現在の状態をレプリケートします。システム・クラッシュの場合など、ホストが予期せずに終了した場合には、状態はレプリケートされません。

セッション状態は以前にレプリケートされていないため、JVMの停止時にすべてのセッション・データがネットワークに一度に送信されます。このため、ネットワークのパフォーマンスが影響を受ける場合があります。このオプションを使用すると、JVMの停止に必要な時間が大幅に長くなる場合があります。 

JVMが正常に停止するたびにBeanの現在の状態をレプリケートします。システム・クラッシュの場合など、ホストが予期せずに停止した場合、状態はレプリケートされません。

Bean状態は以前にレプリケートされていないため、JVMの停止時にすべての状態データがネットワークに一度に送信されます。このため、ネットワークのパフォーマンスが影響を受ける場合があります。このオプションを使用すると、JVMの停止に必要な時間が大幅に長くなる場合があります。 

scope属性

scope属性は、レプリケートするデータを指定します。表3-3では、この属性でサポートされている値について説明しています。

表3-3    scope属性の値 
  HttpSession  ステートフル・セッションBean 

modifiedAttributes 

変更されたHTTPセッション属性のみをレプリケートします。

これは、HttpSessionのデフォルトのレプリケーション設定です。 

該当なし。 

allAttributes 

HTTPセッションに設定されている属性値をすべてレプリケートします。 

ステートフル・セッションBeanに設定されているすべてのメンバー変数値をレプリケートします。

これは、ステートフル・セッションBeanのデフォルトのレプリケーション設定です。 

3.2.6 レプリケート先のノードの数の指定

レプリケート先のノードの数を指定するには、<cluster>タグのwrite-quota属性を使用します。たとえば、次のコードでは、レプリケート・データが2つの他のノードにレプリケートされることを指定しています。

<orion-application ... >
   ...
   <cluster allow-colocation="false" write-quota="2">
      <replication-policy trigger="onShutdown" scope="allAttributes"/>
      <protocol>
         <peer>
            <opmn-discovery/>
         </peer>
      </protocol>
   </cluster>
</orion-application>

デフォルトは1です。

推奨事項: 2つのノードを含むアクティブ/アクティブ・トポロジでは、write-quota1に設定し、データが他方のノードにレプリケートされるようにします。

3つ以上のノードを含むトポロジでは、write-quota2以上に設定し、データが少なくともその他2つのノードにレプリケートされるようにします。

トポロジ内のノードすべてにデータをレプリケートするには、write-quotaをトポロジ内のノードの合計数に設定します。そのノードで別のインスタンスが実行されていると、同じノードに書込みが行われる場合があります。

データベースにレプリケートする場合、write-quota属性は使用されません。

3.2.7 コンポーネントのステータスのチェック

アクティブ/アクティブ・トポロジのインスタンスのステータスをチェックするには、トポロジ内の任意のインスタンスから次のコマンドを実行します。

> cd ORACLE_HOME/opmn/bin
> opmnctl @cluster status

3.2.8 トポロジ内のコンポーネントの起動と停止

opmnctlコマンドを使用すると、トポロジ内のコンポーネントを起動および停止できます。トポロジ内のすべてのOracle Application Serverインスタンスのコンポーネントを起動および停止するには、opmnctl@clusterパラメータを使用する必要があります。opmnctlコマンドは、トポロジ内の任意のインスタンスから実行できます。

たとえば、トポロジ内のすべてのインスタンスのOracle HTTP Serverコンポーネントを起動するには、トポロジ内の任意のインスタンスから次のコマンドを実行します。

> cd ORACLE_HOME/opmn/bin
> opmnctl @cluster startproc ias-component=HTTP_Server

3.2.9 クラスタへのアプリケーションのデプロイ

アプリケーションは、Application Server Controlコンソールを使用するか、コマンドラインから実行するコマンドを使用してデプロイできます。

アプリケーションをクラスタ内のすべてのインスタンスにデプロイする場合は、次のようにadmin_client.jarを使用できます。

> cd ORACLE_HOME/j2ee/home
> java admin_client.jar
             deployer:cluster:opmn://<host>:<opmnPort>/<oc4jInstanceName>
             <adminID> <adminPassword>
             -deploy -file <pathToArchiveFile> -deploymentName <appName>

<host>には、クラスタ内の任意のホストを指定できます。

<opmnPort>には、OPMNがリスニングするポートを指定します。このポートは、opmn.xmlファイルに記載されています。

<oc4jInstanceName>には、アプリケーションのデプロイ先のOC4Jインスタンスを指定します。たとえば、"home"インスタンスにデプロイするには、homeを指定します。

<adminID><adminPassword>には、管理者のIDとパスワードを指定します。通常、adminIDはoc4jadminです。


注意

クラスタ内のすべてのインスタンスに対してデプロイを有効にするには、管理者のパスワードがクラスタ内のすべてのインスタンスに対して同じである必要があります。 


<pathToArchiveFile>には、デプロイするEAR、WAR、またはJARファイルへのフルパスを指定します。

<appName>には、アプリケーション名を指定します。

デプロイについては、コマンドラインで指定できるオプションが他にもあります。詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。

3.2.10 アクティブ/アクティブ・トポロジへのインスタンスの追加

インスタンスを既存のトポロジに追加する手順は次のとおりです。

3.2.11 アクティブ/アクティブ・トポロジからのインスタンスの削除

インスタンスをトポロジから削除する手順は次のとおりです。

3.2.12 mod_oc4jのロード・バランシング・オプションの設定

Oracle HTTP Server内のmod_oc4jモジュールは、リクエストをOC4Jプロセスに委任します。Oracle HTTP ServerがOC4Jに対するURLのリクエストを受信すると、Oracle HTTP Serverではそのリクエストをmod_oc4jモジュールにルーティングします。mod_oc4jモジュールでは、このリクエストをOC4Jプロセスにルーティングします。OC4Jプロセスで障害が発生すると、OPMNはその障害を検出し、mod_oc4jは、障害の発生したOC4Jプロセスが再起動されるまでそのOC4Jプロセスにリクエストを送信しません。

mod_oc4jは、OC4Jプロセスに対するリクエストをロード・バランシングするように構成できます。Oracle HTTP Serverでは、mod_oc4jを経由して、各種のロード・バランシング・ポリシーをサポートしています。ロード・バランシング・ポリシーは、ネットワーク・トポロジやホスト・マシンの性能に応じて、パフォーマンス上のメリットだけでなく、フェイルオーバーや高可用性も実現します。

mod_oc4jには、必要なルーティングのタイプと複雑さに応じて、異なるロード・バランシング・ルーティング・アルゴリズムを指定できます。ステートレス・リクエストは、mod_oc4j.confで指定されたアルゴリズムに基づいて使用可能な宛先にルーティングされます。ステートフルHTTPリクエストは、セッションIDを使用して前回のリクエストを処理したOC4Jプロセスに転送されます。ただし、mod_oc4jがOPMNとの通信によってそのプロセスが使用不可であると判断した場合を除きます。その場合、mod_oc4jは、指定されたロード・バランシング・プロトコルに従って使用可能なOC4Jプロセスにそのリクエストを転送します。

デフォルトでは、すべてのOC4Jインスタンスに同じ重みが付けられており(すべてのインスタンスに1の重みが付けられている)、mod_oc4jではラウンド・ロビン方法を使用して、リクエストの転送先のOC4Jインスタンスを選択します。OC4Jインスタンスの重みは、トポロジ内の他の使用可能なOC4Jインスタンスの重みに対する比率として扱われ、インスタンスが処理するリクエストの数が定義されます。リクエストが確立済のセッションに属する場合、mod_oc4jでは、そのセッションを開始したのと同じOC4Jインスタンスおよび同じOC4Jプロセスにそのリクエストを転送します。

mod_oc4jのロード・バランシング・オプションでは、リクエストの送信先OC4Jインスタンスを判断するとき、OC4Jインスタンス上で実行されているOC4Jプロセスの数を考慮しません。OC4Jインスタンスの選択は、インスタンスに対して構成済の重みと、その可用性に基づいて行われます。

mod_oc4jロード・バランシング・ポリシーを変更するには、ORACLE_HOME/Apache/Apache/conf/mod_oc4j.confファイル内のOc4jSelectMethodディレクティブとOc4jRoutingWeightディレクティブを設定します。

  1. 各Oracle Application Serverインスタンスのmod_oc4j.confファイルの<IfModule mod_oc4j.c>セクションで、Oc4jSelectMethodディレクティブを表3-4に示す値のいずれかに設定します。

    Oc4jSelectMethodディレクティブをroundrobin:weightedまたはrandom:weightedに設定した場合は、Oc4jRoutingWeightディレクティブも設定して重みを指定します(次の手順を参照)。

    ルーティング・アルゴリズムを選択する際のヒントについては、「mod_oc4jのロード・バランシング・アルゴリズムの選択」を参照してください。

    表3-4    Oc4jSelectMethodの値 
      説明 

    roundrobin(デフォルト) 

    mod_oc4jでは、トポロジ内のすべてのOC4Jプロセスをリストに配置し、リスト内の順序に従ってプロセスを選択します。 

    roundrobin:local 

    roundrobinと似ていますが、リストにはローカルのOC4Jプロセスのみが含まれています。利用可能なローカルOC4Jプロセスがない場合は、リモートOC4Jプロセスを選択します。 

    roundrobin:weighted 

    mod_oc4jでは、各インスタンスに構成されているルーティングの重みに基づいて、各OC4Jインスタンスへのリクエストの合計ロードを分散します。次に、ラウンド・ロビン方式でローカルのインスタンスからOC4Jプロセスを選択します。

    この重みは、Oc4jRoutingWeightディレクティブを使用して構成します。 

    random 

    mod_oc4jでは、トポロジ内のすべてのOC4JプロセスのリストからOC4Jプロセスをランダムに選択します。 

    random:local 

    randomと似ていますが、mod_oc4jではローカルのOC4Jプロセスが優先されます。利用可能なローカルOC4Jプロセスがない場合は、リモートOC4Jプロセスを選択します。 

    random:weighted 

    mod_oc4jでは、トポロジ内の各インスタンスに構成されている重みに基づいて、OC4Jプロセスを選択します。

    この重みは、Oc4jRoutingWeightディレクティブを使用して構成します。 

    metric 

    mod_oc4jでは、プロセスのビジー状況を示す実行時メトリックに基づいて、リクエストをルーティングします。 

    metric:local 

    metricと似ていますが、mod_oc4jではローカルのOC4Jプロセスが優先されます。使用可能なローカルのOC4Jプロセスがない場合は、リモートのOC4Jプロセスにルーティングされます。 

    例:

    Oc4jSelectMethod random:local
    
    

    メトリックベースのロード・バランシングの設定方法の詳細は、『Oracle HTTP Server管理者ガイド』の付録「mod_oc4jを使用したロード・バランシング」を参照してください。

  2. Oc4jSelectMethodディレクティブを重みベースの方法(つまりroundrobin:weightedまたはrandom:weighted)に設定した場合は、Oc4jRoutingWeightディレクティブも設定して重みを指定します。

    Oc4jRoutingWeightの構文は次のとおりです。

    Oc4jRoutingWeight hostname weight

    Oc4jRoutingWeightディレクティブを設定しない場合は、デフォルトの重みの1が使用されます。

    例: 3つのインスタンス(A、BおよびC)で構成されるトポロジがあり、BとCがAの2倍のリクエストを受信するように設定するには、すべてのインスタンスに対して次のディレクティブを設定します。

    Oc4jSelectMethod roundrobin:weighted
    Oc4jRoutingWeight hostB 2
    Oc4jRoutingWeight hostC 2
    
    

    hostAのOc4jRoutingWeightの設定はオプションです。指定しない場合はデフォルト値の1が使用されるためです。

  3. トポロジ内のすべてのインスタンスに対してOracle HTTP Serverを再起動し、変更を反映させます。

    > opmnctl @cluster restartproc ias-component=HTTP_Server
    
    
mod_oc4jのロード・バランシング・アルゴリズムの選択

mod_oc4jで使用するロード・バランシング・オプションを決定する際は、次のガイドラインが役に立ちます。

3.2.13 Java Message Service(JMS)での高可用性の構成

JMSの高可用性の構成方法の詳細は、『Oracle Containers for J2EEサービス・ガイド』の第4章「Oracle Enterprise Messaging Serviceの使用」を参照してください。

3.3 Oracle HTTP ServerおよびOC4Jにおける高可用性機能の要約

表3-5は、Oracle HTTP ServerおよびOC4Jにおける高可用性機能の要約を示しています。

表3-5    Oracle HTTP ServerおよびOC4Jにおける高可用性機能の要約 
項目  説明 

ノード障害からの保護 

Oracle HTTP Server: Oracle HTTP Serverインスタンスの前にデプロイされているロード・バランサは、ノードの障害からの保護を提供します。ロード・バランサには、外部ロード・バランサまたはOracleAS Web Cache(リリース2(10.1.2)のOracleAS Web Cache)を使用できます。

OC4J: mod_oc4jは、動作中のOC4Jインスタンスのみにリクエストをルーティングします。OC4Jインスタンスは複数のノードにインストールして実行し、常に少なくとも1つのノードでOC4Jが動作している確率を高めるようにします。 

サービス障害からの保護 

Oracle HTTP Server: Oracle HTTP Serverインスタンスの前にデプロイされているロード・バランサは、最初のOracle HTTP Serverからレスポンスがない場合や、URLのpingの結果からOracle HTTP Serverに障害が発生したと思われる場合、別のOracle HTTP Serverにリクエストを送信します。ロード・バランサには、外部ロード・バランサまたはOracleAS Web Cacheを使用できます。

OC4J: OPMNはOC4Jプロセスを監視し、障害発生時にはそのプロセスを再起動します。またOPMNは、この再起動が成功しなかった場合、動作しているOC4Jプロセスにのみリクエストを送信するようmod_oc4jに通知します。 

プロセス障害からの保護 

Oracle HTTP Server: OPMNはOracle HTTP Serverプロセスを監視し、障害発生時にそのプロセスを再起動します。さらに、トポロジ内の別のOracle HTTP Serverプロセスで障害が発生した場合、OPMNはそれぞれのOracle HTTP Serverに障害を通知します。

OC4J: OPMNはOC4Jプロセスを監視し、障害発生時にはそのプロセスを再起動します。またOPMNは、この再起動が成功しなかった場合、動作しているOC4Jプロセスにのみリクエストを送信するようmod_oc4jに通知します。 

自動再ルーティング 

Oracle HTTP Server: Oracle HTTP Serverインスタンスの前にデプロイされているロード・バランサは、最初のOracle HTTP Serverからレスポンスがない場合、別のOracle HTTP Serverにリクエストを自動的に再ルーティングします。

OC4J: mod_oc4jは、最初のOC4Jプロセスからレスポンスがない場合、別のOC4Jプロセスにリクエストを自動的に再ルーティングします。 

関連項目

 

3.4 その他のトピック

3.4.1 JNDIネームスペースのレプリケーション

EJBクラスタリングを有効にすると、中間層OracleAS ClusterのOC4Jインスタンス間のJNDIネームスペースのレプリケーションも有効になります。1つのOC4Jインスタンス内のJNDIネームスペースへの新規バインドは、中間層OracleAS Cluster内の他のOC4Jインスタンスに伝播されます。再バインドとアンバインドはレプリケートされません。

このレプリケーションは、各OracleAS Cluster(OC4J)の有効範囲外で行われます。つまり、OC4Jインスタンス内の複数のOracleAS Cluster(OC4J)は、同じレプリケート済JNDIネームスペースへの可視性を持ちます。

JNDIの詳細は、『Oracle Containers for J2EEサービス・ガイド』を参照してください。

3.4.2 EJBクライアント・ルーティング

EJBクライアント・ルーティングでは、Oracle HTTP ServerとサーブレットおよびJSP間でmod_oc4jが提供するルーティング機能は、EJBクラスによって実行されます。クライアントは、Remote Method Invocation(RMI)プロトコルを使用してEJBを起動します。RMIプロトコル・リスナーは、RMI構成ファイルrmi.xmlによってOC4Jインスタンスごとに設定されます。これはWebサイト構成とは別です。EJBクライアントとOC4Jツールは、構成されたRMIポートを使用してOC4Jサーバーにアクセスします。OPMNによって、RMIリスナーが使用できる一連のポートが指定されます。

EJBルックアップで「opmn:ormi://」接頭辞文字列を使用すると、クライアントは割り当てられたRMIポートを自動的に取得します。ロード・バランシングとクライアント・リクエスト・ルーティングは、使用可能な様々なOC4Jプロセスを選択するOPMNによって提供されます。このロード・バランシングに使用されるアルゴリズムは、ランダム・アルゴリズムです。高可用性を確保するために、カンマで区切られた複数のOPMN URLを使用できます。

3.4.3 Java Object Cacheを使用したOC4Jの分散キャッシュ

Oracle Application Server Java Object Cacheでは、OC4Jにデプロイされたアプリケーションに対する高可用性ソリューションとして機能する分散キャッシュを提供します。Java Object Cacheは、あらゆるJavaプラットフォーム上のあらゆるJavaアプリケーションで使用可能なJavaオブジェクトのインプロセス・キャッシュです。これにより、アプリケーションで、複数のリクエストおよびユーザー間でオブジェクトを共有し、複数のプロセス間でオブジェクトのライフサイクルを調整することが可能になります。

Java Object Cacheは、同じOracleAS Cluster(OC4J)、Oracle Application Serverインスタンスまたは全般的なOracle Application Server Clusterに属していないプロセスも含めた、OC4Jプロセス間でのデータ・レプリケーションを可能にします。

Java Object Cacheを使用すると、オブジェクトの生成元のアプリケーションがどれであるかにかかわらず、共有Javaオブジェクトがローカルにキャッシュされるため、パフォーマンスが向上します。これにより、可用性も向上します。オブジェクトのソースが使用できなくなっても、ローカルにキャッシュされたバージョンは引き続き使用できます。

Java Object Cacheの使用方法の詳細は、『Oracle Containers for J2EEサービス・ガイド』の「Java Object Cache」を参照してください。


戻る 次へ
Oracle
Copyright © 2006, Oracle.

All Rights Reserved.
目次
目次
索引
索引