ヘッダーをスキップ
Oracle BPEL Process Manager IBM WebSphere Application Serverのためのインストレーション・ガイド
10g リリース3(10.1.3.3)for UNIX Systems and Microsoft Windows
B50571-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 Oracle BPEL Process Managerクラスタ化

Oracle BPEL Process Managerは、Webサービスへのリクエストの送信、Webサービスからのレスポンスの受信、今後使用するためのプロセスの保存(デハイドレーション)、保存済プロセスの取得、受信データに対するロジックの実行などのタスクを実行します。BPELプロセスの実行中に単一のOracle BPEL Serverに障害が発生すると、サービスが中断されます。信頼性、スループットおよびパフォーマンスが向上するようにクラスタを設定することで、この中断を回避できます。

この章では、迅速かつ信頼性の高いパフォーマンスを提供するように、10.1.3.1.0 Oracle BPEL Process Manager for OracleAS Middle Tierインストール・タイプのクラスタを作成および構成する方法について説明します。

この章の内容は次のとおりです。

5.1 クラスタ化のシナリオとアーキテクチャ

Oracle BPEL Process Managerがインストールおよびクラスタ化されるJ2EEインスタンスは、OPMNクラスタの一部である必要があります。この環境では、BPELアプリケーションをデプロイするときに、BPELアプリケーションの一部であるJ2EEアプリケーションがすべてのノード(稼働中の場合)に自動的にデプロイされます。

Oracle BPEL Process Manager 10.1.3.1は、次のコンポーネントで構成されるクラスタ化環境をサポートしています。

次のコンポーネントは、Oracle BPEL Process Managerクラスタ化に適しています。

サーバーに障害が発生した場合は、別のサーバーで稼働しているその次に使用可能なOracle BPEL Serverが、最後のデハイドレーション・ポイントからプロセスを再開します。すべてのOracle BPEL Serverが同じデータベース・リソースとSOAP URLを共有します。フロント・エンド・ロード・バランサとディスパッチャが使用可能なかぎり、クラスタ内のOracle BPEL Server間でBPELプロセスが共有されます。Oracle BPEL Serverが停止すると、クラスタ内の残りのOracle BPEL Serverが選択され、障害が発生したOracle BPEL Serverの完了していないBPELプロセスの処理が続行されます。

図5-1に、このOracle BPEL Process Managerクラスタ化環境の概要を示します。

図5-1 クラスタ環境のOracle BPEL Process Manager

図5-1の説明は次にあります。
「図5-1 クラスタ環境のOracle BPEL Process Manager」の説明


関連項目:

  • Oracle Application Server SOA拡張インストール・タイプをインストールおよびクラスタ化する方法は、使用しているオペレーティング・システムの『Oracle Application Serverインストレーション・ガイド』を参照してください。

  • Oracle BPEL Process Manager for OracleAS Middle Tierをインストールする方法は、第2章「Oracle BPEL Process Managerのインストール」を参照してください。


5.2 Oracle BPEL Process Managerクラスタの作成

この項では、Oracle BPEL Process Managerクラスタの作成方法について説明します。

この項の内容は次のとおりです。

5.2.1 作業1: 必要なコンポーネントのインストール


注意:


クラスタ内のすべてのノードに対して時間の同期を正確に行ってください。たとえば、プロセスに待機アクティビティがあり、クラスタ内のすべてのノードが同じ時間で動作しているとはかぎらない場合は、アクティビティが別のタイムゾーンに存在しているために、ノードに障害が発生したときに、実際の待機時間より前にアクティビティが終了する可能性があります。

たとえば、UNIXシステムでは、ネットワーク時間プロトコル(NTP)(/usr/sbin/ntpdate)を使用してシステム時刻と同期化します。


  1. 次のOracle Application Server SOA拡張インストール・タイプのいずれかをインストールするには、使用しているオペレーティング・システムの『Oracle Application Serverインストレーション・ガイド』の指示に従ってください。

    • J2EEサーバーとWebサーバー

    • J2EEサーバー

    たとえば、host 1の場合は、次のようになります。

    C:\OraBPELMT
    

    注意:


    Oracle HTTP Serverは、「J2EEサーバーとWebサーバー」インストール・タイプでインストールされ、ロード・バランサとして使用できます。「J2EEサーバー」インストール・タイプには、ロード・バランサは含まれません。サード・パーティのロード・バランサをインストールして構成することもできます。

  2. Oracle BPEL Process Manager for OracleAS Middle Tierを、Oracle Application Server SOA拡張インストール・タイプと同じOracleホームにインストールします。

    たとえば、host 1の場合は、次のようになります。

    C:\OraBPELMT
    
  3. 手順12を繰り返して、Oracle Application Server SOA拡張インストール・タイプとOracle BPEL Process Manager for OracleAS Middle Tierを、異なるノード上(host 2、host 3など)の同じOracleホーム・ディレクトリにインストールします。

  4. 各Oracle BPEL Process Manager for OracleAS Middle Tierのインストール中に、同じデハイドレーション・ストアを指していることを確認します。

    これで、インストールが完了しました。この項の残りの作業では、Oracle BPEL Process Managerクラスタの構成方法について説明します。

5.2.2 作業2: 構成ファイルの編集

Oracle BPEL Process Manager for OracleAS Middle Tierをインストールした各ノードで、次のプロパティの値を設定することで、クラスタを構成します。

  • クラスタID、ホストおよびポート

  • マルチキャスト・アドレス

  • マルチキャスト・ポート

  1. テキスト・エディタを使用して、SOA_Oracle_Home\bpel\system\config\collaxa-config.xmlファイルを開きます。

  2. enableClustertrueに設定して、クラスタ化を有効にします。

    <property id="enableCluster">
    <name>Cluster enable flag</name>
    <value>true</value>
    
  3. 使用するロード・バランサがインストールされているノードのclusterName、クラスタID、ホスト名およびポートの各値を指定します。クラスタIDは、ノード間通信のフィルタとして使用される一意の文字列である必要があります。「J2EEサーバーとWebサーバー」インストール・タイプをインストールした場合は、Oracle HTTP Serverロード・バランサのクラスタID、ホスト名およびポートがデフォルトで表示されます。

    <property id="clusterName">
    <name>Cluster Id</name>
    <value>myhost-pc.us.oracle.com:8888</value>
    

    enableClusterおよびclusterNameプロパティの値は、クラスタ内のすべてのOracle BPEL Process Managerノードについて同じにする必要があります。

  4. 変更内容を保存し、ファイルを閉じます。

  5. テキスト・エディタを使用して、SOA_Oracle_Home\bpel\system\config\jgroups-protocol.xmlファイルを開きます。

  6. クラスタ内の各ノードが同じサブネットにあるか異なるサブネットにあるかに応じて、次の手順を参照してください。

    すべてのノードが同じサブネットにある 手順
    はい 7
    いいえ 10

  7. ユーザー・データグラム・プロトコル(UDP)のmcast_portおよびmcast_addr値を指定します。

    <config>
        <UDP mcast_send_buf_size="32000"
            mcast_port="45788"
            ucast_recv_buf_size="64000"
            mcast_addr="228.8.15.24"
            bind_to_all_interfaces="true"
            loopback="true"
            mcast_recv_buf_size="64000"
            max_bundle_size="48000"
            max_bundle_timeout="30"
            use_incoming_packet_handler="false"
            use_outgoing_packet_handler="false"
            ucast_send_buf_size="32000"
            ip_ttl="32"
            enable_bundling="false"/>
        <PING timeout="2000"
            num_initial_members="3"/>
        <MERGE2 max_interval="10000"
            min_interval="5000"/>
        <FD timeout="2000"
            max_tries="3"
            shun="true"/>
        <VERIFY_SUSPECT timeout="1500"/>
        <pbcast.NAKACK max_xmit_size="8192"
            use_mcast_xmit="false"
            gc_lag="50"
            retransmit_timeout="600,1200,2400,4800"/>
        <UNICAST timeout="1200,2400,3600"/>
    . . .
    . . .
    

    mcast_portおよびmcast_addrプロパティの値は、クラスタ内のすべてのOracle BPEL Process Managerノードについて同じにする必要があります。

  8. 変更内容を保存し、ファイルを閉じます。

  9. 手順13に進みます。

  10. jgroups-protocol.xmlを次のように編集します。

    <!-- For cluster across subnet, please use the following tcp config and
       - change the initial_hosts instead of the above, the initial_hosts that
       - are going to be participating in the cluster.
    -->
    <config>
        <TCP start_port="7900" loopback="true" send_buf_size="32000"
           recv_buf_size="64000"/>
        <TCPPING timeout="3000" initial_hosts="node1[7900],node2[7900]"
           port_range="3" num_initial_members="3"/>
        <FD timeout="2000" max_tries="4"/>
        <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
        <pbcast.NAKACK gc_lag="100" retransmit_timeout="600,1200,2400,4800"/>
        <pbcast.STABLE stability_delay="1000" desired_avg_gossip="20000"
           down_thread="false" max_bytes="0" up_thread="false"/>
        <VIEW_SYNC avg_send_interval="60000" down_thread="false"
           up_thread="false" />
        <pbcast.GMS print_local_addr="true" join_timeout="5000"
           join_retry_timeout="2000" shun="true"/>
    </config>
    

    node1およびnode2を実際のホスト名に置き換えます。

  11. 変更内容を保存し、ファイルを閉じます。

  12. 手順13に進みます。

  13. 「作業1: 必要なコンポーネントのインストール」でOracle Application Server SOA拡張インストール中にプロンプトが表示されたときに、ロード・バランサのURLを指定しなかった場合は、この情報を手動で指定する必要があります。

    1. Oracle BPEL Admin Consoleにログインします。

      http://localhost:port/BPELAdmin
      
    2. oc4jadminユーザー名およびパスワードを入力します。

    3. 「構成」タブで、ロード・バランサURLのホスト名およびポートを指すように、次の2つのパラメータを設定します。

      パラメータ 説明
      soapServerUrl プロセスのBPEL SOAPサーバー・エンドポイントURL http://hostname:port
      soapCallbackUrl プロセスのBPEL SOAPコールバックURL http://hostname:port

  14. Oracle Application Server SOA拡張インストール・タイプおよびOracle BPEL Process Manager for OracleAS Middle Tierがインストールされている残りのすべてのノード(host 2など)について、この構成手順を繰り返します。

5.2.3 作業3: ホストの再起動

クラスタ内の各ノードを手動で再起動する必要があります。

  1. ディレクトリを次の場所に変更します。

    cd SOA_Oracle_Home\opmn\bin
    
  2. Oracle Application Serverを停止して再起動します。

    opmnctl stopall
    opmnctl startall
    
  3. Oracle Application Serverが完全に再起動するのを待ってから、クラスタ内の次のノードでOracle Application Serverを起動します。

  4. クラスタ内の残りの各ノードについて、手順1から3を繰り返します。

5.2.4 作業4: BPELプロセスのコンパイルおよびデプロイ

ベスト・プラクティスとして、Oracle JDeveloperではなくantを使用して、本番クラスタ環境にデプロイすることをお薦めします。

  1. BPELプロセスのデプロイ元になるホストに移動します。

  2. BPELプロセスがクラスタに対応していることを確認します。たとえば、プロジェクトがEJBバインディング(SOA_Oracle_Home\bpel\samples\702.Bindings\EJBBindingのサンプルなど)を使用する場合は、次の点を確認します。

    • URLをハードコードするのではなく、WSDLファイルの${jndi_provider_url}などのシステム変数を使用します(前述のEJBBindingディレクトリのCreditRatingService.wsdlファイルをサンプルとして参照してください)。

    • EJBバインディングを使用する場合は、EJBスタブ・クラスをBPELクラスタ内の各ノードのSOA_Oracle_Home\bpel\system\classesディレクトリにコピーまたはFTPで送信します。10.1.3.1クラス・ロードの現在の制限として、EJBクライアント側クラスは、BPELスーツケースとともにパッケージ化およびデプロイすることはできません。これらのクラスは、各ノードのsystem\classesディレクトリに存在する必要があります。build.xmlファイルのantプロパティ・タスクを使用すると、コピーまたはFTPの使用を自動化できます。詳細は、Apache antのドキュメントを参照してください。

    • BPELクラスタ内のノードごとに共有ライブラリをインポートして、サード・パーティ・ライブラリをアップロードします。詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。

  3. テキスト・エディタを使用して、SOA_Oracle_Home\bpel\utilites\ant-orabpel.propertiesファイルを開きます。

  4. 複数のノード間で共通の値を共有するプロパティを定義します。次に例を示します。

    http.hostname=load_balancer_url
    http.port=load_balancer_port
    cluster = true
    oc4jinstancename = default_group
    j2ee.hostname = node1.mycompany.com
    opmn.requestport=6005
    

    それぞれの意味は次のとおりです。

    • http.hostnamehttp.portは、ロード・バランサのURLとポートです。URLは、Oracle Application Server SOA拡張インストール時に設定された、または「作業2: 構成ファイルの編集」の手順13のインストール後作業として手動で設定されたsoapServerUrlの値と一致する必要があります。soapServerUrlの値は、すべてのノードについて同じである必要があります。

    • clusterは、アプリケーションがOC4Jクラスタにデプロイされることを示します。このプロパティは、J2EEアーティファクトに必要です。

    • oc4jinstancenameは、OC4J container for Oracle Application Serverがクラスタ化されるOPMNクラスタ・グループです。グループとは、同じクラスタ・トポロジに属するOC4Jインスタンスの集合です。

    • j2ee.hostnameは、Oracle Enterprise Manager 10g Application Server Controlコンソールを含むOC4JコンテナへのURLを定義します。

    • opmn.requestportは、前述のOC4JコンテナのOPMNリクエスト・ポートを定義します。

  5. antを実行して、BPELスーツケースをデプロイします。


    注意:

    • プロパティの詳細は、SOA_Oracle_Home\bpel\utilites\ant-orabpel.propertiesのコメントを参照してください。

    • 場合によっては、BPELプロセスのデプロイは、Oracle BPEL Process Managerがインストールされていないノードを含む、クラスタ内のすべてのノードに対して自動的に試行されることがあります。Oracle BPEL Process Managerがインストールされていないノードについて、デプロイ操作失敗のメッセージが表示された場合、そのメッセージは無視できます。

    • BPELプロセスのデプロイ元となるホストは、Oracle BPEL Process Managerクラスタの一部である必要はありません。



関連項目:


OC4Jコンテナおよびグループの詳細は、『Oracle Application Server管理者ガイド』を参照してください。

5.3 まとめ

この章では、Oracle BPEL Process Managerクラスタの構成方法について説明しました。このクラスタは、Oracle Application Server SOAの「J2EEサーバーとWebサーバー」拡張インストール・タイプまたは「J2EEサーバー」拡張インストール・タイプと、「BPEL Process Manager for OracleAS Middle Tier」インストール・タイプで構成されます。