February 9, 2009

Configuring a BPEL Process Manager cluster using TCP instead of UDP

When configuring multicast for an Oracle SOA Suite 10g (10.1.3.3) cluster, there are two sets of multicast addresses that are required; one for the Oracle Application Server and a completely separate one for BPEL Process Manager. This is to allow BPEL Process Manager to manage active/passive adapter state as well as propagate process deployment notifications in the cluster.

The TCP settings in jgroups-protocol.xml are designed for clustering across subnets, and Oracle seems to generally recommend using multicast otherwise. Unfortunately, the Enterprise Deployment Guide (10.1.3.3) does not describe how to configure TCP-based clustering for BPEL Process Manager.

When to use TCP for BPEL Process Manager Clustering

You should you use node-to-node (TCP) instead of multicast (UDP) when configuring a BPEL Process Manager cluster if a combination of the conditions below apply:

- You cannot configure multicast.
- Your BPEL Process Manager servers communicate across subnets.
- You have a very large number of nodes in your cluster.
- Performance of UDP is slow in your environment.

Configuring TCP-based clustering for BPEL Process Manager

Perform the following on all BPEL Process Manager servers in your cluster.

1. Comment out the UDP multicast configuration in jgroups-protocol.xml:
    <--
    <config>
    <UDP mcast_send_buf_size="32000"
    .
    .
    .
    </config>
    -->

2. Uncomment the TCP configuration in jgroups-protocol.xml and update the initial_hosts attribute with the hostnames in your node-to-node cluster, as well as the port you want to use (7900 in the example below):
    <config>
    <TCP start_port="7900" loopback="true" send_buf_size="32000" recv_buf_size="64000"/>
    <TCPPING timeout="3000" initial_hosts="
    server1[7900],server2[7900]" port_range="3" num_initial_members="3"/>
    .
    .
    .

The configured port should be identical across all servers.

3. Restart OPMN.

If configured correctly, the log file SOA_GROUP~OC4J_SOA~SOA_GROUP~1.log should show it working with entries similar to:
    INFO: server socket created on 192.168.28.210:7900
    GMS: address is 192.168.28.210:7900
    INFO: created socket to 192.168.28.207:7900
    INFO: created socket to 192.168.28.210:7900

The log entries below shows the result of having incorrectly configured different ports:
    WARNING: discarded message from different group "server2:8880" (our group is "server1:7777"). Sender was192.168.28.207:7900
    WARNING: discarded message from different group "server2:8880" (our group is "server1:7777"). Sender was192.168.28.207:7900

Good luck.

4 comments:

  1. that was quite detailed.
    Thanks for sharing

    ReplyDelete
  2. Quester is a Pakistan-based questioning answering website where people can ask questions and we try our best to provide them with the best answers. Anyone can ask any legit question in English or Roman Urdu and we provide answers in the same language format. www.quester.pk

    ReplyDelete