Tuesday, March 23, 2010

BPEL 10g: Clustering with JGroups on OC4J and Weblogic

Using a cluster with Oracle SOA Suite with BPEL is more or less straight forward. BPEL is using JGroups for clustering. It is used for process deployed, process state changes and process undeployment. Most likely user will use the out-of-the-box feature of JGroups. This is based on multicasting. I have written a cluster document that was based on mulicast earlier.

Using multicasting can be an issue in the network. Multicast is based on UDP and is often blocked in the network. I encountered this issue at a few customers. The solution is rather simple, instead of using UDP/multicast we use TCP to point to the nodes in the cluster.

In the next example, we have two nodes; node1 and node2. They will use port 7900 with a range of 3 to broadcast the BPEL process changes.

On each node:
cd /u01/appl/p1bplpe/product/OracleAS_1/bpel/system/config
mv jgroups-protocol.xml jgroups-protocol.xml.old
cat >> jgroups-protocol.xml << EOF 
<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> EOF 
 
cp jgroups-protocol.xml jgroups-protocol.xml.new
Restart the nodes

Post a Comment