Skip Headers
Oracle® BPEL Process Manager Installation Guide
10g Release 3 (10.1.3.1.0) for UNIX and Microsoft Windows

Part Number B28980-03
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

5 Oracle BPEL Process Manager Clustering

Oracle BPEL Process Manager performs tasks such as sending requests to and receiving responses from Web services, storing processes for future use (dehydration), retrieving stored processes, and performing logic on incoming data. If a single Oracle BPEL Server fails while BPEL processes are running, service is interrupted. This interruption is preventable by setting up a cluster to improve reliability, throughput, and performance.

This chapter provides information on how to create and configure a cluster of 10.1.3.1.0 Oracle BPEL Process Manager for OracleAS Middle Tier installation types to provide faster and more reliable performance.

This chapter contains the following topics:

5.1 Clustering Scenario and Architecture

J2EE instances on which Oracle BPEL Process Manager is installed and clustered must be part of an OPMN cluster. In this environment, J2EE applications that are part of BPEL applications are automatically deployed to all nodes (if they are up and running) when a BPEL application is deployed.

Oracle BPEL Process Manager 10.1.3.1 supports a clustering environment that consists of the following components:

The following components are sufficient for Oracle BPEL Process Manager clustering:

In case of server failure, the next available Oracle BPEL Server running on another server resumes the process from the last dehydration point. All Oracle BPEL Servers share the same database resource and SOAP URLs. As long as a front end load balancer and dispatcher are available, the BPEL processes are shared among the Oracle BPEL Servers in the cluster. If any Oracle BPEL Servers are down, the remaining Oracle BPEL Servers in the cluster pick up and continue processing the uncompleted BPEL processes of the failed Oracle BPEL Server.

Figure 5-1 provides an overview of this Oracle BPEL Process Manager clustering environment.

Figure 5-1 Oracle BPEL Process Manager in a Cluster Environment

Description of Figure 5-1 follows
Description of "Figure 5-1 Oracle BPEL Process Manager in a Cluster Environment"

See Also:

  • Oracle Application Server Installation Guide 10g Release 3 (10.1.3.1.0) for your operating system for instructions on installing and clustering the Oracle Application Server SOA advanced installation types

  • Chapter 2, "Oracle BPEL Process Manager Installation" for instructions on installing Oracle BPEL Process Manager for OracleAS Middle Tier

5.2 Creating an Oracle BPEL Process Manager Cluster

This section describes how to create an Oracle BPEL Process Manager cluster.

This section contains the following topics:

5.2.1 Task 1: Installing the Required Components

Notes:

Ensure that you have accurate time synchronization on all nodes in a cluster. For example, if there are wait activities in your process and all nodes in the cluster are not operating with identical times, an activity may finish ahead of the actual wait time when a node fails, as they happen to be in different time zones.

For example, on UNIX systems, synchronize the system time through the network time protocol (NTP) (/usr/sbin/ntpdate).

  1. Follow the instructions in Oracle Application Server Installation Guide 10g Release 3 (10.1.3.1.0) for your operating system to install either of the following Oracle Application Server SOA advanced installation types:

    • J2EE Server and Web Server

    • J2EE Server

    For example, on host 1:

    C:\OraBPELMT
    

    Note:

    The Oracle HTTP Server is installed with the J2EE Server and Web Server installation type and can be used as a load balancer. The J2EE Server installation type does not include a load balancer. You can also install and configure a third-party load balancer.
  2. Install Oracle BPEL Process Manager for OracleAS Middle Tier into the same Oracle home as the Oracle Application Server SOA advanced installation type in Step 1.

    For example, on host 1:

    C:\OraBPELMT
    
  3. Repeat Steps 1 and 2 to install an Oracle Application Server SOA advanced installation type and Oracle BPEL Process Manager for OracleAS Middle Tier into the same Oracle home directory on a different node (for example, on host 2, host 3, and so on).

  4. Ensure that you point to the same dehydration store during each Oracle BPEL Process Manager for OracleAS Middle Tier installation.

    Installation is now complete. The remaining tasks in this section describe how to configure the Oracle BPEL Process Manager cluster.

5.2.2 Task 2: Editing Configuration Files

You now configure the cluster by setting values for the following properties on each node on which you installed the Oracle BPEL Process Manager for OracleAS Middle Tier:

  • Cluster ID, host, and port

  • Multicast address

  • Multicast port

  1. Use a text editor to open the SOA_Oracle_Home\bpel\system\config\collaxa-config.xml file.

  2. Set enableCluster to true to enable clustering.

    <property id="enableCluster">
    <name>Cluster enable flag</name>
    <value>true</value>
    
  3. Specify the clusterName cluster ID, host name, and port values for the node on which the load balancer to use is installed. The cluster ID must be a unique string that is used as a filter for internode communication. If you installed the J2EE Server and Web Server installation type, the cluster ID, host name, and port for the Oracle HTTP Server load balancer appear by default.

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

    The values for the enableCluster and clusterName properties must be the same for all Oracle BPEL Process Manager nodes in the cluster.

  4. Save your changes and exit the file.

  5. Use a text editor to open the SOA_Oracle_Home\bpel\system\config\jgroups-protocol.xml file.

  6. See the following step based on whether each node in the cluster is in the same subnet or a different subnet:

    Are All Nodes in the Same Subnet? See Step...
    Yes 7
    No 10

  7. Specify the User Datagram Protocol (UDP) mcast_port and mcast_addr values.

    <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"/>
    . . .
    . . .
    

    The values for the mcast_port and mcast_addr properties must be the same for all Oracle BPEL Process Manager nodes in the cluster.

  8. Save your changes and exit the file.

  9. Go to Step 13.

  10. Edit jgroups-protocol.xml as follows:

    <!-- 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> 
    

    where you replace node1 and node2 with the actual host names.

  11. Save your changes and exit the file.

  12. Go to Step 13.

  13. If you did not specify the URL of the load balancer when prompted during Oracle Application Server SOA advanced installation in "Task 1: Installing the Required Components", you must manually specify this information.

    1. Log in to Oracle BPEL Admin Console.

      http://localhost:port/BPELAdmin
      
    2. Enter the oc4jadmin username and password.

    3. Set the following two parameters under the Configuration tab to point to the host name and port of the load balancer URL:

      Parameter Description Example
      soapServerUrl The BPEL SOAP server endpoint URL of a process http://hostname:port
      soapCallbackUrl The BPEL SOAP callback URL of a process http://hostname:port

  14. Repeat these configuration steps on all remaining nodes on which an Oracle Application Server SOA advanced installation type and Oracle BPEL Process Manager for OracleAS Middle Tier are installed (for example, on host 2).

5.2.3 Task 3: Restarting the Hosts

You must manually restart each of the nodes in the cluster.

  1. Change directories to the following location:

    cd SOA_Oracle_Home\opmn\bin
    
  2. Stop and restart Oracle Application Server:

    opmnctl stopall
    opmnctl startall
    
  3. Wait for Oracle Application Server to completely restart before starting Oracle Application Server on the next node in the cluster.

  4. Repeat Steps 1 through 3 for each of the remaining nodes in the cluster.

5.2.4 Task 4: Compiling and Deploying the BPEL Process

As a best practice, Oracle recommends using ant, instead of Oracle JDeveloper, to deploy to a production cluster environment.

  1. Go to the host from which to deploy BPEL processes.

  2. Ensure your BPEL process is cluster-ready. For example, if your project uses EJB binding (such as the sample in SOA_Oracle_Home\bpel\samples\702.Bindings\EJBBinding), review the following:

    • Use system variables such as ${jndi_provider_url} in the WSDL file instead of hard-coding the URL. (See the CreditRatingService.wsdl file for the sample in the EJBBinding directory mentioned above.)

    • If you use EJB bindings, copy or FTP the EJB stub classes to the SOA_Oracle_Home\bpel\system\classes directory on each node in the BPEL cluster. As a current limitation in 10.1.3.1 class loading, the EJB client side classes can not be packaged and deployed together with the BPEL suitcase. These classes must reside in the system\classes directory of each node. You can automate copying or using FTP by using ant property tasks in your build.xml file. See your Apache ant documentation for more details.

    • Upload any third party libraries by importing shared libraries for each node in the BPEL cluster. See Oracle Containers for J2EE Deployment Guide for details.

  3. Use a text editor to open the SOA_Oracle_Home\bpel\utilites\ant-orabpel.properties file.

  4. Define the properties that share common values across multiple nodes. For example:

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

    where:

    • http.hostname and http.port are the URL and port for the load balancer. The URL must match the value of soapServerUrl set either during Oracle Application Server SOA advanced installation or manually as a postinstallation task in Step 13 of "Task 2: Editing Configuration Files". The value for soapServerUrl must be the same for all nodes.

    • cluster indicates that applications are to be deployed in an OC4J cluster. This property is required for J2EE artifacts.

    • oc4jinstancename is the OPMN cluster group in which the OC4J container for Oracle Application Server is clustered. A group is a collection of OC4J instances that belong to the same cluster topology.

    • j2ee.hostname defines the URL to the OC4J container that includes Oracle Enterprise Manager 10g Application Server Control Console.

    • opmn.requestport defines the OPMN request port for the above OC4J container.

  5. Deploy the BPEL suitcase by running ant.

    Note:

    • For property descriptions, see the comments in SOA_Oracle_Home\bpel\utilites\ant-orabpel.properties.

    • In some situations, deployment of BPEL processes may also be automatically attempted to all nodes in your cluster, including nodes on which Oracle BPEL Process Manager is not installed. If you receive a deployment operation failure message on a node on which Oracle BPEL Process Manager in not installed, it can be ignored.

    • The host from which to deploy BPEL processes does not need to be part of the Oracle BPEL Process Manager cluster.

See Also:

Oracle Application Server Administrator's Guide for details about OC4J containers and groups

5.3 Summary

This chapter describes how to configure an Oracle BPEL Process Manager cluster. This cluster consists of an Oracle Application Server SOA advanced J2EE Server and Web Server installation type or J2EE Server installation type and an Oracle BPEL Process Manager for OracleAS Middle Tier installation type.