ヘッダーをスキップ

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

E05048-01
目次
目次
索引
索引

戻る 次へ

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

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

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

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

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

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

3.1.1 ロード・バランサの要件

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

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

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

3.1.2 WebCenterアプリケーションに関する注意事項

WebCenterアプリケーションをアクティブ/アクティブ・トポロジで実行している場合は、次の点に注意してください。

3.1.2.1 Oracle Metadata Services(MDS)の共有記憶域

各ノードのローカル・ドライブに加えて、アクティブ/アクティブ・トポロジ内のすべてのノードからアクセス可能な共有記憶域が必要です。共有記憶域には、Oracle Metadata Services(MDS)用のディレクトリを作成する必要があります。MDSディレクトリには、デプロイされたWebCenterアプリケーション用のページ・カスタマイズ・データとポートレット・メタデータが格納されます。

共有記憶域にMDSディレクトリがあると、すべてのOracle Application Serverインスタンスが同じデータにアクセスできるようになり、データのレプリケートを考慮する必要はなくなります。

MDSディレクトリのマウント・ポイントは、アクティブ/アクティブ・トポロジ内のすべてのノードで同じにする必要があります(たとえば、UNIXでは/oracle/mds、WindowsではS:¥oracle¥mds)。Windowsでは、マウント・ポイントは、ドライブ文字も含めてすべてのノードで同じにする必要があります。たとえば、あるノードでS:¥oracle¥mdsとし、別のノードでT:¥oracle¥mdsとすることはできません。

共有記憶域は、インストール時には不要ですが、アプリケーションをデプロイするときに必要となります。アプリケーションのデプロイ時に、MDSディレクトリへのパスを指定します。

ポートレット・プリファレンス・ストアの共有記憶域: 高可用性トポロジでは、ポートレット・プリファレンス・ストアとして、(MDSとは別の)データベースを使用することをお薦めします。ただし、ファイルベースのポートレット・プリファレンス・ストアを使用する場合は、ファイルを共有記憶域に配置することもできます。ポートレット・プリファレンス・ストアの詳細は、第3.1.2.2項「ポートレット・プリファレンス・ストアのタイプと場所」を参照してください。

3.1.2.2 ポートレット・プリファレンス・ストアのタイプと場所

WebCenterアプリケーションでは、リモート・コンピュータのポートレット・プロデューサでホスト可能なポートレットを消費します。ポートレット・プロデューサは、ポートレットのプリファレンスまたはカスタマイズをプリファレンス・ストアに格納します。プリファレンス・ストアは、データベースベースでもファイルベースでもかまいません。


注意

Webクリッピング・ポートレットは、プリファレンス・ストアを使用しません。そのかわり、クリッピングおよびクリッピングの定義の格納にはリポジトリを使用します。詳細は、第3.1.2.3項「Webクリッピング・ポートレットのリポジトリ」を参照してください。 


高可用性トポロジでは、データベースベースのプリファレンス・ストアを使用し、このデータベースを、Real Application Clustersデータベースやコールド・フェイルオーバー・クラスタ・データベースなど、高可用性に構成することをお薦めします。

プリファレンス・ストアのタイプは、ポートレット・プロデューサのweb.xmlファイル(WSRPプロデューサ用)、またはprovider.xmlファイル(PDK-Javaプロデューサ用)で指定します。

ポートレット・プリファレンス・ストアのバックアップ: Oracle Application Server環境をバックアップする際は、ポートレット・プリファレンス・ストア(ファイルまたはデータベース)を含める必要があります。詳細は、『Oracle Application Server管理者ガイド』のポートレット・プロデューサのバックアップの実行に関する項を参照してください。

ポートレット・プリファレンス・ストアとMDSを混同しないでください。この2つの概念はまったく違います。第3.1.2.1項「Oracle Metadata Services(MDS)の共有記憶域」の説明にあるように、MDSはファイルベースしかなく、共有記憶域に格納されます。

3.1.2.2.1 データベースベースのポートレット・プリファレンス・ストア

ポートレット・プリファレンスをデータベースに格納する場合、このデータベースは、Real Application Clustersデータベースやコールド・フェイルオーバー・クラスタ・データベースなど、高可用性データベースにする必要があります。

プリファレンス・ストアでなくリポジトリを使用するWebクリッピング・ポートレットについては、第3.1.2.3項「Webクリッピング・ポートレットのリポジトリ」を参照してください。


注意

Webクリッピング・ポートレットを使用している場合、そのリポジトリにReal Application Clustersデータベースを使用することはできません。かわりに、コールド・フェイルオーバー・クラスタ・データベースを使用できます。 


データベースベースのプリファレンス・ストアを構成する具体的な手順については、『Oracle WebCenter Framework開発者ガイド』のデータベース・プリファレンス・ストアの設定に関する項を参照してください。

注意:

3.1.2.2.2 ファイルベースのポートレット・プリファレンス・ストア

ポートレット・プリファレンスをファイルに格納する場合、アクティブ/アクティブ・トポロジ内のすべてのノードからそのファイルにアクセスできる必要があります。たとえば、共有記憶域にこのファイルを配置します。

詳細は、『Oracle WebCenter Framework開発者ガイド』のファイルベースのプリファレンス・ストアの設定に関する項を参照してください。

3.1.2.2.3 ファイルベースとデータベースベース間のポートレット・プリファレンス・ストアの移行

当初の予定を変更して、ファイルベースからデータベースベースに、またはデータベースベースからファイルベースに、ポートレット・プリファレンス・ストアを移行することができます。

最初にアプリケーションをデプロイしたときに選択肢を指定しなかった場合、デフォルトで、Oracle Application Serverはポートレット・プリファレンスをファイルに格納するように設定されます。プリファレンス・ストアをデータベースベースに変更するには、web.xmlファイルまたはprovider.xmlファイルを編集し、ポートレット・プロデューサを実行しているOC4Jインスタンスを停止して、移行ユーティリティを実行したら、そのOC4Jインスタンスを起動します。

移行ユーティリティによって、ファイルベースからデータベースベースに、またはデータベースベースからファイルベースに、ポートレット・プリファレンス・ストアを移行することができます。詳細は、『Oracle WebCenter Framework開発者ガイド』のポートレット・プリファレンス・ストアの移行ユーティリティに関する項を参照してください。

3.1.2.3 Webクリッピング・ポートレットのリポジトリ

Webクリッピング・ポートレットはPDK-Javaポートレット・プロデューサ・タイプですが、ポートレット・プリファレンス・ストアを使用しません。そのかわり、クリッピングおよびクリッピングの定義の格納にはリポジトリを使用します。

Webクリッピング・ポートレットのリポジトリは、MDSファイルにもデータベースにも配置できます。高可用性トポロジの場合は、データベースをお薦めします。

MDSファイルを使用する場合、高可用性トポロジ内のすべてのノードからアクセスできるように、MDSファイルが共有ファイル・システムに配置されていることを思い出してください。

詳細は、『Oracle WebCenter Framework開発者ガイド』のWebクリッピング・ポートレットとプリファレンス・ストアについて知っておくべきことに関する項を参照してください。


注意

Webクリッピング・ポートレットでは、そのリポジトリにReal Application Clustersデータベースを使用することはできません。かわりに、コールド・フェイルオーバー・クラスタ・データベースを使用できます。 


3.1.2.4 J2EEレプリケーション

トポロジにOC4J_WebCenterインスタンスのJ2EEレプリケーションを設定する必要があります。レプリケーションの設定方法の詳細は、第3.2.2項「レプリケーションの設定」を参照してください。

3.1.3 Oracle Content DBのフェイルオーバーの制限

Oracle Content DBをアクティブ/アクティブ・トポロジまたはアクティブ/パッシブ・トポロジで実行している場合、Oracle Content DBには、フェイルオーバー時に次の制限があります。

3.1.4 同じ場所に配置したトポロジ: コンポーネントを同じOracleホームに配置

このアクティブ/アクティブ・トポロジ(図3-1を参照)では、Oracle HTTP ServerとWebCenter Suiteが同じOracleホームにインストールされています。

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


画像の説明

3.1.4.1 インストール手順の概要

この項では、インストール手順の概要を示します。詳細は、ご使用のプラットフォームのOracle Application Serverのインストレーション・ガイドを参照してください。

  1. Oracle Content DBをインストールする場合は、データベースが必要です。高可用性トポロジでは、Oracle Real Application Clustersデータベースのような高可用性データベースを使用してください。

    データベースの初期化パラメータが正しく設定されているかどうかを確認してください。詳細は、ご使用のプラットフォームのOracle Application Serverのインストレーション・ガイドを参照してください。

    SYSユーザーのパスワードも知っておく必要があります。

  2. リポジトリ情報をOracle Internet Directoryに格納する場合は、Oracle Internet Directoryを用意しておきます。Oracle Internet Directoryは、可用性の高い方法で構成してください。

    Oracle Internet Directoryを用意していない場合は、リポジトリ情報をファイルに格納できます。

  3. 必要なコンポーネントをインストールします。コンポーネントは、各ノードのローカル記憶域にインストールします。

    • すべてのコンポーネント(Oracle HTTP Server、WebCenter FrameworkおよびOracle Content DB)を1つのOracleホームにインストールするには、「基本インストール」オプションを使用します。

    • Oracle HTTP Serverに加えてWebCenter FrameworkとOracle Content DBのいずれかをインストールするには、「拡張インストール」オプションを使用して、「Oracle WebCenter FrameworkとOracle HTTP Server」オプションまたは「Oracle Content Database」オプションを選択します。

    • Oracle Application Serverインスタンスをクラスタリングする必要があります。これは、インストール時でもインストール後でも実行できます。

3.1.4.2 インストール後の手順

インストール後に、次の手順を実行します。

  1. インストール時にOracle Application Serverインスタンスをクラスタリングしなかった場合は、インストール後にクラスタリングできます。詳細は、第3.2.1項「OracleAS Clusterの設定」を参照してください。

  2. リクエストをすべてのノードに送信するようにロード・バランサを構成します。スティッキー・セッションは不要です。

  3. この手順は、SSLを使用している場合にのみ必要です。

    各ノードのORACLE_HOME/Apache/Apache/conf/httpd.confファイルを次のように編集します。

    1. certheaders_moduleをロードするように次の行を追加します。

      • UNIXでOracle HTTP Server 1.3を使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module libexec/mod_certheaders.so
        
        
      • UNIXでOracle HTTP Server 2.0を使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module modules/mod_certheaders.so
        
        
      • WindowsでOracle HTTP Serverを使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module modules/ApacheModuleCertHeaders.dll
        
        
    2. 仮想ホスト・ディレクティブを追加します。

      <VirtualHost *:7777>
      ServerName myworkplace.com
      Port 443
      ServerAdmin you@youraddress.com
      RewriteEngine On
      RewriteOptions inherit
      SimulateHTTPS On
      </VirtualHost>
      
      
    3. すべてのノードでOracle HTTP Serverを再起動します。

  4. 各ノードで、Application Server Controlを使用してドメインのプロパティを更新します。

    • IFS.DOMAIN.APPLICATION.ApplicationHostを、ロード・バランサ上に構成された仮想ホスト名に設定します。

    • IFS.DOMAIN.APPLICATION.ApplicationHostを、ロード・バランサ上に構成されたポート番号に設定します。

    Application Server Controlを使用してこれらのプロパティを編集する手順は、次のとおりです。

    1. 「クラスタ・トポロジ」ページで「OC4J_Content」を展開します。

    2. OC4J_Content」の下にある「コンテンツ」をクリックします。「アプリケーション: コンテンツ」ページが表示されます。

    3. 「アプリケーション: コンテンツ」ページで、「Content DBの拡張」をクリックします。「Content DB: コンテンツ」ページが表示されます。

    4. 「Content DB: コンテンツ」ページで、「管理」タブをクリックします。

    5. 「タスクに移動」列の「ドメインのプロパティ」アイコンをクリックします。

    6. 「ドメインのプロパティ」ページで「IFS.DOMAIN.APPLICATION.ApplicationHost」プロパティをクリックし、その値を、ロード・バランサ上に構成された仮想ホスト名に設定します。「OK」をクリックします。

    7. 「ドメインのプロパティ」ページで「IFS.DOMAIN.APPLICATION.ApplicationPort」プロパティをクリックし、その値を、ロード・バランサ上に構成されたポート番号に設定します。「OK」をクリックします。

  5. 各ノードでOPMNをリロードします。

    > ORACLE_HOME/opmn/bin/opmnctl reload
    
    

3.1.5 分散トポロジ: Oracle HTTP Server、WebCenter FrameworkおよびOracle Content DBを個別のOracleホームに配置

図3-2は、Oracle HTTP Server、WebCenter FrameworkおよびOracle Content DBが個別のノードにインストールされている分散アクティブ/アクティブ・トポロジを示しています。このトポロジを使用できるのは、ノードがWeb層とアプリケーション層に分かれていて、かつ層の中でノードがファイアウォールによって切り離されている場合です。

図3-2    Oracle HTTP Server、WebCenter FrameworkおよびOracle Content DBが個別のOracleホームにインストールされているアクティブ/アクティブ・トポロジ


画像の説明

3.1.5.1 Web層

Oracle HTTP Serverは、Web層で実行されています。Oracle HTTP Serverの可用性を高めるには、アクティブ/アクティブとアクティブ/パッシブいずれかのトポロジで実行します。

3.1.5.2 アプリケーション層

WebCenter FrameworkとOracle Content DBは、アプリケーション層のノードのローカル記憶域にある個別のOracleホームにインストールします。これらは個別のインストールであるため、同じノードにも別のノードにもインストールできます。WebCenter FrameworkとOracle Content DBは、両方のコンポーネントが必要である場合を除き、両方ともインストールする必要はありません。

Web層とアプリケーション層にあるOracleホームはすべて、同じOracleAS Clusterにあります。これによって、Oracle HTTP Serverは、同じクラスタに属するどのOC4Jインスタンスにもリクエストを送信できます。

アプリケーション層のノードには、共有記憶域に対するアクセス権限が必要です。この共有記憶域には、Oracle Metadata Services(MDS)ディレクトリが含まれます。詳細は、第3.1.2.1項「Oracle Metadata Services(MDS)の共有記憶域」を参照してください。

3.1.5.3 インストール手順の概要

この項では、インストール手順の概要を示します。詳細は、ご使用のプラットフォームのOracle Application Serverのインストレーション・ガイドを参照してください。

  1. Oracle Content DBをインストールする場合は、データベースが必要です。高可用性トポロジでは、Oracle Real Application Clustersデータベースのような高可用性データベースを使用してください。

    データベースの初期化パラメータが正しく設定されているかどうかを確認してください。詳細は、ご使用のプラットフォームのOracle Application Serverのインストレーション・ガイドを参照してください。

    SYSユーザーのパスワードも知っておく必要があります。

  2. リポジトリ情報をOracle Internet Directoryに格納する場合は、Oracle Internet Directoryを用意しておきます。Oracle Internet Directoryは、可用性の高い方法で構成してください。

    Oracle Internet Directoryを用意していない場合は、リポジトリ情報をファイルに格納できます。

  3. Web層のノードにOracle HTTP Serverをインストールします。Oracle HTTP Serverをインストールするには、インストーラで「拡張インストール」オプションを選択して、「Oracle HTTP Server」オプションを選択します。

    (Oracle HTTP Server、WebCenter FrameworkまたはOracle Content DBを実行する)Oracle Application Serverインスタンスをクラスタリングする必要があります。クラスタの構成は、インストール時でもインストール後でも実行できます。

  4. アプリケーション層のノードにWebCenter Frameworkをインストールします。WebCenter Frameworkをインストールするには、インストーラで「拡張インストール」オプションを選択して、「Oracle WebCenter Framework」オプションを選択します。

  5. アプリケーション層のノードにOracle Content DBをインストールします。Oracle Content DBをインストールするには、インストーラで「拡張インストール」オプションを選択して、「Oracle Content Database」オプションを選択します。

3.1.5.4 インストール後の手順

インストール後に、次の手順を実行します。

  1. インストール時にOracle Application Serverインスタンスをクラスタリングしなかった場合は、インストール後にクラスタリングできます。すべてのOracle Application Serverインスタンスを、Web層とアプリケーション層の両方にクラスタリングする必要があります。詳細は、第3.2.1項「OracleAS Clusterの設定」を参照してください。

  2. リクエストをアプリケーション層のすべてのノードに送信するように、アプリケーション層にロード・バランサを構成します。スティッキー・セッションは不要です。

  3. Oracle Content DBをインストールしたOracleホームのOracle HTTP Serverを無効にします。

    1. ORACLE_HOME/opmn/conf/opmn.xmlファイルで、次のようにOracle HTTP Serverのステータスをdisabledに設定します。

      <ias-component id="HTTP_Server" status="disabled">
      
      
    2. Oracleホームにあるコンポーネントをすべて停止して再起動します。

      > ORACLE_HOME/bin/opmnctl stopall
      > ORACLE_HOME/bin/opmnctl startall
      
      
  4. この手順は、SSLを使用している場合にのみ必要です。

    Oracle HTTP Serverノードで、ORACLE_HOME/Apache/Apache/conf/httpd.confファイルを次のように編集します。

    1. certheaders_moduleをロードします。

      • UNIXでOracle HTTP Server 1.3を使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module libexec/mod_certheaders.so
        
        
      • UNIXでOracle HTTP Server 2.0を使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module modules/mod_certheaders.so
        
        
      • WindowsでOracle HTTP Serverを使用している場合は、httpd.confファイルに次の行を追加します。

        LoadModule certheaders_module modules/ApacheModuleCertHeaders.dll
        
        
    2. 仮想ホスト・ディレクティブを追加します。

      <VirtualHost *:7777>
      ServerName myworkplace.com
      Port 443
      ServerAdmin you@youraddress.com
      RewriteEngine On
      RewriteOptions inherit
      SimulateHTTPS On
      </VirtualHost>
      
      
    3. すべてのノードでOracle HTTP Serverを再起動します。

  5. 各ノードで、Application Server Controlを使用してドメインのプロパティを更新します。

    • IFS.DOMAIN.APPLICATION.ApplicationHostを、ロード・バランサ上に構成された仮想ホスト名に設定します。

    • IFS.DOMAIN.APPLICATION.ApplicationHostを、ロード・バランサ上に構成されたポート番号に設定します。

    Application Server Controlを使用してこれらのプロパティを編集する手順は、次のとおりです。

    1. 「クラスタ・トポロジ」ページで「OC4J_Content」を展開します。

    2. OC4J_Content」の下にある「コンテンツ」をクリックします。「アプリケーション: コンテンツ」ページが表示されます。

    3. 「アプリケーション: コンテンツ」ページで、「Content DBの拡張」をクリックします。「Content DB: コンテンツ」ページが表示されます。

    4. 「Content DB: コンテンツ」ページで、「管理」タブをクリックします。

    5. 「タスクに移動」列の「ドメインのプロパティ」アイコンをクリックします。

    6. 「ドメインのプロパティ」ページで「IFS.DOMAIN.APPLICATION.ApplicationHost」プロパティをクリックし、その値を、ロード・バランサ上に構成された仮想ホスト名に設定します。「OK」をクリックします。

    7. 「ドメインのプロパティ」ページで「IFS.DOMAIN.APPLICATION.ApplicationPort」プロパティをクリックし、その値を、ロード・バランサ上に構成されたポート番号に設定します。「OK」をクリックします。

  6. 各ノードでOPMNをリロードします。

    > ORACLE_HOME/opmn/bin/opmnctl reload
    
    

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

アクティブ/アクティブ・トポロジ内のすべてのOracle Application Serverインスタンスは、同じクラスタに属しています。Oracle HTTP Serverは、アプリケーションのリクエストを、同じクラスタ内のどのOC4Jインスタンスにも転送できます。WebCenter FrameworkとOracle Content DBのコンポーネントがOC4Jコンテナで実行されるため、この機能は有用です。

表3-1    WebCenter FrameworkとOracle Content DB、およびそれらのOC4Jインスタンス 
コンポーネント  実行されるOC4Jインスタンス 

WebCenter Framework 

OC4J_WebCenter 

Oracle Content DB 

OC4J_Content 

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

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

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

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

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

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アプリケーションのセッション状態のフェイルオーバー


画像の説明

3.1.7.1 <distributable/>タグ

アプリケーション・クラスタリングを使用するように構成されたアプリケーションの一部となるすべてのWebモジュール用のweb.xmlファイルに、空の<distributable/>タグを追加する必要があります。デプロイ後に、このJ2EE標準Webモジュール・ディスクリプタは、ORACLE_HOME/j2ee/j2ee_instance_name/applications/app_name/web_module_name/WEB-INFディレクトリに配置されています。

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

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

3.1.7.3 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.8 アクティブ/アクティブ・トポロジのOracle Application Serverインスタンスのプロパティ

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

3.1.9 グループについて

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

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

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

図3-4は、3つのOracle Application Serverインスタンスを示しています。これらの各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.9.1 グループの作成

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

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

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

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

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

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

Application Server Controlの使用

「クラスタ・トポロジ」ページでOracle Application Serverインスタンスの名前をクリックすると、「アプリケーション・サーバー: <インスタンス名>」ページが表示されます。「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グループに追加されます。指定したグループが存在しない場合は作成されます。

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

createinstance -instanceName sales -groupName finance

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

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

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

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

opmnctl reload

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

  4. JDBCリソースを構成するには、「JDBCリソース」行の「タスクに移動」アイコンをクリックします。「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.9.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.10 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.8項「mod_oc4jのロード・バランシング・オプションの設定」を参照してください。

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

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


画像の説明

3.1.11 アクティブ/アクティブ・トポロジでの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.12 アクティブ/アクティブ・トポロジでの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.13 アクティブ/アクティブ・トポロジでの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構成および管理ガイド』の「クラスタおよびOC4Jグループの構成と管理」を参照してください。


注意

クラスタリングするOracle Application Serverインスタンスを実行するノードが別のサブネットにある場合、またはファイアウォールによって切り離されている場合、ゲートウェイを使用してクラスタを構成することが必要になる場合があります。詳細は、『Oracle Containers for J2EE構成および管理ガイド』の「クラスタおよびOC4Jグループの構成と管理」の「トポロジ間ゲートウェイの構成」を参照してください。 


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 レプリケーションの設定

レプリケーションは様々な方法で設定できます。

レプリケーションのポリシーを定義することができます。これにより、レプリケーションの実行時期、およびデータをレプリケートするノード数の制限を指定します。

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

マルチキャスト・レプリケーションは、デフォルトのレプリケーション・タイプです。マルチキャスト・レプリケーションを使用するようにアプリケーションを設定するには、空の<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.2.2 peer-to-peerレプリケーションの設定

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

3.2.2.2.1 動的な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の設定」を参照してください。

3.2.2.2.2 静的な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.2.3 データベースへのレプリケーションの設定

このレプリケーション・メカニズムでは、レプリケートされたデータはデータベースに保存されます。データベースはアプリケーションの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.2.4 レプリケーション・ポリシーの設定

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

3.2.2.4.1 trigger属性

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

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

onSetAttribute 

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

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

該当なし。 

onRequestEnd(デフォルト) 

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

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

onShutdown 

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

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

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

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

3.2.2.4.2 scope属性

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

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

modifiedAttributes 

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

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

該当なし。 

allAttributes 

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

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

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

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

レプリケート先のノードの数を指定するには、<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.3 コンポーネントのステータスのチェック

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

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

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

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

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

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

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

今回のリリースでデプロイ手順が変更されましたので注意してください。特に、共有記憶域上のMDSディレクトリへのパスを指定することが必要になりました。これを行うには、新たに導入された「Predeploymentツール」を実行します。

Predeploymentツールは1つのノードでのみ実行します。トポロジの各ノードで実行する必要はありません。

デプロイ手順の詳細は、『Oracle WebCenter Framework開発者ガイド』の第9章「WebCenterアプリケーションのデプロイ」を参照してください。

アプリケーションは、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.6 アクティブ/アクティブ・トポロジへのインスタンスの追加

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

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

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

3.2.8 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-5に示す値のいずれかに設定します。

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

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

    表3-5    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.9 Java Message Service(JMS)での高可用性の構成

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

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

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

表3-6    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 © 2007, Oracle.

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