Thursday, February 18, 2010

Installing ESB cluster

In the previous post i have talked about the basics about ESB-DT and ESB-RT .Now we directly start with our installation.


First node
=============

We will isntall the cluster in the latest release that is 10.1.3.5

Start with SOA Suite 10.1.3.1 installation

step1-start the installation wizard
======================================




step2
=========




step3
==========


step4
==============


step5
=========




step6
==========




Ok so now you have installed your j2ee and web server.Now the next stpe is to create group and instances in your em console.

We will be creating two groupg SOA_GROUP and ESBDT_GROUP

We will again create two instance OC4J_SOA and OC4J_ESBDT.

We will be creating two instances because as we have discussed in our previous post esbdt and esb rt shoule not be on the same container.So we will install our runtime component in OC4J_SOA and design time in OC4J_ESBDT.

Now log in to the em console by following url http://host:port/em

create a grop and give it the name SOA_GROUP



Now create a new oc4j instance and name it oc4j_soa and add it to the soa_grpup as shown below




Change the jvm parametes of this instance by going to application and server setting tab.AS per sun's recommendataion the maximum and minimum heap size be same.Depending upon you RAM size make both of them 256,512or 1024 as per your RAM.

do the same configuration for ESBDT_GROUP abd OC4J_ESBDT


=====================================================
Run irca to create the schemas



Provide database details and then password for orabpel,oraesb and orawsm schema



Finally it should show the status as success



================================================


Install bpel 10131 on oc4j_soa container


step1
=========




step2
=========

This step you have take care of.Here you have to choose the same path as you have provided in the installation of the j2ee server.It is by default available in the drop down box.Choose the same path and the name will automatically appear.Please do not provide a new path or name otherwise it will give you an issue.




step3
=========




step4
============


step5
=========


step6
===========
correclty choose the oc4j instance name




step7
========


step8
=========



step9
=========


step10
==========



Install ESB 10131 runtime environment to the same oc4j_soa container.

step1
======



step2
=======


step3
=========


step4
==========


step5
==========


step6
=========


step7
=========


step8
=======


step9
=========


step10
=========


step11
==========


so after installing the bpel and esb rt your em console should loook like this



Upgrading to 10.1.3.5

step1
=======



step2
==========


step3
=======


step4
==========


step5
=========


step6
==========



step7
=========



Ok once the upgradation to 10.1.3.5 is over you need to upgrade the orabpel and oraesb schema also.Run the upgrade10131_10135 for both orabpel and oraesb





Now we will install our ESB-DT on the OC4J_ESBDT container.

Install ESB-DT using ant

Go to following directory

SOA_HOME\integration\esb\install\ant-tasks

Edit esb_oc4j_install_props.xml

And provide the values as below

In my case it looks like

<?xml version="1.0"?>

<!-- $Header: esb_oc4j_install_props.xml 28-apr-2007.02:07:30 apatel Exp $ -->

<!--
Copyright (c) 2007, Oracle. All rights reserved.

NAME
esb_oc4j_install_props.xml - Values to be used for deploying ESB on
OC4J container

DESCRIPTION
esb_oc4j_install_props.xml is imported in esboc4j.xml build file
to deploy ESB (either repository or runtime) on OC4J container.
Change the values of the properties in this file per your environment
and then run ant -f $OH/integration/esb/install/ant-tasks/esboc4j.xml.

The values of the properties you enter here are the ones you enter
on Oracle Universal Installer (OUI) while installing Enterprise
Service Bus (ESB) on OracleAS midtier using Advanced option.

NOTES
<other useful comments, qualifications, etc.>

MODIFIED (MM/DD/YY)
apatel 03/05/07 - Creation

-->
<project name="ESB Installation Properties" default="">

<!--
OC4J container in which you want to deploy ESB
-->
<property name="home_container_v" value="OC4J_ESBDT"/>

<!--
ESB component (runtime or repository) that you want to deploy on OC4J.
Possible values: 'design' (for repository)
'runtime' (for runtime)
-->
<property name="esb_type_v" value="design"/>

<!--
OC4J host hosting the repository
-->
<property name="ohs.host" value="arahi-pc2.idc.abc.com"/>

<!--
Port of OC4J host hosting the repository
-->
<property name="ohs.port" value="7777"/>

<!--
Username for connecting to oraesb schema
-->
<property name="db.user" value="oraesb"/>

<!--
Password for connecting to oraesb schema
-->
<property name="db.password" value="welcome1"/>

<!--
Database host where oraesb schema is installed
-->
<property name="db_host_v" value="arahi-pc2.idc.abc.com"/>

<!--
Port of database host where oraesb schema is installed
-->
<property name="db_port_v" value="1521"/>

<!--
Service name for database where oraesb schema is installed
-->
<property name="db_sid_v" value="oracle"/>

<!--
Value of AS Instance Name to which the OC4J instance
belongs. The OC4J instance is the one specified in
property 'home_container_v' in this file.
-->
<property name="ias_name_v" value="SOACluster1.arahi-pc2.idc.abc.com"/>

<!--
Value for 'AS Administrator Password'
-->
<property name="admin.server.password" value="welcome1"/>


<!--
Database url for connecting to oraesb schema
Sample value: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=tcp)(HOST=mypc.acme.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))
-->
<property name="db.url" value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=tcp)(HOST=arahi-pc2.idc.idc.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=oracle)))"/>

<!--
If your computer is located behind a firewall
you may need to route outgoing HTTP connections
through a proxy server.
Sample value: www-proxy.acme.com
-->
<property name="http.proxy.host" value="proxy.acme.com"/>

<!--
HTTP proxy port
-->
<property name="http.proxy.port" value="80"/>

<!--
Addresses for which proxy should be bypassed
Sample value: "*acmecorp.com|localhost|mypc.us.oracle.com|*acme.com"
-->
<property name="http.non.proxy.hosts" value="*acmecorp.com|localhost|mypc.acme.com|*acme.com"/>

<!--
Value of AS Instance Name.
You can also get this value from $ORACLE_HOME/config/ias.properties property 'IASname'
Sample value: soahome.mypc.acme.com
-->
<property name="ias.name" value="SOACluster1.arahi-pc2.idc.abc.com"/>


<!--
Value for OPMN request port.
You can get this value from the following snippet in
$ORACLE_HOME/opmn/conf/opmn.xml
<notification-server>
<port local="6101" remote="6201" request="6004"/>
<ssl enabled="true" wallet-file="$ORACLE_HOME\opmn\conf\ssl.wlt\default"/>
</notification-server>
-->
<property name="opmn.requestport" value="6003"/>

<!--
Sample value: mypc.acme.com
-->
<property name="ias.virtual_host" value="SOACluster1.arahi-pc2.idc.abc.com"/>


</project>


once changes done go to
SOA_HOME\integration\esb\bin
and do a esbsetenv.bat




Now run the following command

ant -f D:\product\10.1.3.1\OracleAS_1\integration\esb\install\ant-tasks\esboc4j.xml

this will start the deployment of ESB_DT




Verify in the last if the deployment was successful or not.





Once done configure a load-balancer to configure a common URL

Please refer to my post "Using web Cache as a load-Balancer" for setting a load balancer.

Configure the BPEL Cluster
=============================

On both the nodes

GO to SOA_HOME/bpel/system/config/collaxa-config.xml
and set enableCluster to true
enter a unique name for the clusterName parameter's value: e.g. arpit. This value must be the same on both nodes.
change the
soapServerURL and
soapCallbackURL to the loadbalancer host and url

Go to SOA_HOME/bpel/system/config/jgroups-protocol.xml
and check mcast_port and mcast_addr

Both the values should be same on both the nodes.

Now

GO to SOA_HOME/bpel/utilities/ant-orabpel.properties
and set cluster = true
Restart the application servers on both nodes, using

opmnctl stopall and then opmnctl startall.

====================================================
Tune your jvm parameters

No need to set threads as after 10.1.3.4 the concepts of thread has been removed.

configure the failover for ESB_DT
===================================
Go to SOA_HOME/opmn/conf/opmn.xml

set service-failover=1 for the OC4J_ESBDT container

Change the following

<process-type id="OC4J_ESBDT" module-id="OC4J" status="enabled" >

to

<process-type id="OC4J_ESBDT" module-id="OC4J" status="enabled" service-failover="1">


and remove the numprocs change the

<process-set id="ESBDT_GROUP" numprocs="1"/> to

<process-set id="ESBDT_GROUP" />

Once done restart your server


Configuring ESB_RT(runtime)
===========================
Go to SOA_HOME/j2ee/OC4J_SOA/applications/esb-rt/META-INF/orion-application.xml

and uncomment the following lines

<!-- <property name="cluster_name" value="ESB" />
<property name="primary_oc4j" value="false" />
<property name="xa_timeout" value="60" />
<property name="jms_receive_timeout" value="30" />
<property name="esbSystemForBPEL" value="BPELSystem" />
<property name="InboundRetryCount" value="3" />
<property name="InboundRetryInterval" value="5" />
<property name="InboundRetryEnabled" value="true" />
<property name="OutboundRetryCount" value="3" />
<property name="OutboundRetryInterval" value="5" />
<property name="OutboundRetryEnabled" value="true" /> -->

Now change the cluster_name to some othername like arpitrahi and make these changes in both the nodes.

Ensure that the primary_oc4j is set to false.

From 10.1.3.4 onwards we have some extra properties added to it they are

<property name="bpelSvcAutoDeletion" value="true" />

<property name="oracle.tip.esb.server.common.interceptor.IEsbMessageInterceptor" value="true" />

<property name="inboundMessageInterceptor" value="oracle.tip.esb.server.common.interceptor.test.TestInterceptor" />

<property name="outboundMessageInterceptor" value="oracle.tip.esb.server.common.interceptor.test.TestInterceptor" />

<property name="enqueuer_number" value="10" />

<property name="isConcreteSuffixRequired" value="false" />

they should be also uncommented.



Sometimes when you redeploy a BPEL process, because of failed deployment or may be some other issues BPEL process is not deployed correctly. SO any ESB services pointing to this BPEL process will delete this entry of BPEL process.
If you do not want to delete the process from ESB on undeployment from BPEL, we need to update esb_config.ini file located in /integration/esb/config folder.

bpelSvcAutoDeletion=false

Default value of this property is true (and is not included in esb_config.ini). We are using this to override default behavior.

Once you make this change restart the server and you should be now good to go.

The orion-application.xml override the value in esb_config.ini so even if you make the changes in orion-application.xml it will work.

By default ESB_DT uses a file-based slide repository. to change it to database-based slide repository

GO to SOA_HOME\integration\esb\config

Copy Domain_DB.xml and rename it as Domain.xml

Once these changes are done .Restart your SOA Server.
==========================================================

Now Set the cluster name in the ESB console

log in to the ESB consolehttp://host:port/esb
select DefaultSystem

give Cluster Name: arpitrahi

i have giventhe cluster name as arpitrahi you can put any name.
Virtual Host -provide the loadbalancer URL
Port -provide the loadbalancer port

now check this by logging in to both the esb console if the changes are reflceted in both the nodes or not.
====================================================

Now the most important configuration part is Configuring JNDI for the Topic and Topic Connection Factory.You should take care in these steps as any mistake in these changes will cause lot of issues in clustering of ESB.This step needs to be done for both the nodes and for both the container oc4j_soa and oc4j_ESBDT so in all you have to do these steps 4 times.

Now go to each node individually

Log in to the EM Control http://host:port/em and select the OC4J_SOA container

Then choose Administration tab
Go to task icon for Database Persistence
click on Deploy and enter the following:

Resource Adapter Module Name -OracleOJMS

In the bottom select Add a new resource provider to be used by this connector

provide Resource Provider Name as esbRP and Datasource JNDI Location as jdbc/esbaqdatasource

say ok and then restart the server.

Now again

log in to the em console
http://jost:port/em

select the OC4J_SOA->Administration->Database Persistence

Now select here the OJMS_RA

and then select Connection Factories

say create and Select javax.jms.XATopicConnectionFactory from the Connection Factory Interface

say continue
In the JNDI Location field, enter OracleOJMS/XATCF and click Finish


Again create one more connection factory by selecting javax.jms.TopicConnectionFactory from the Connection Factory Interface drop-down list and in JNDI Location field, enter OracleOJMS/TCF and click Finish.

Once done go to Administered Objects tab and say Create
There slect oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl from the drop-down list and click Continue.

Provide the JNDI Location as ESBTopics and resourceProviderName as esbRP that we have created earlier.

then finish.
===============================================================

Updating the ESB Metadata

Go to the following location

SOA_HOME/integration/esb/bin and create a file named esbparam.properties

open the file and enter the following details their

DT_OC4J_HTTP_PORT=7777
DT_OC4J_HOST=arahi-pc1.idc.abc.com
PROP_NAME_DEFERRED_TOPIC_JNDI=ESBTopics/Topics/ESB_JAVA_DEFERRED
PROP_NAME_DEFERRED_TCF_JNDI=OracleOJMS/TCF
PROP_NAME_DEFERRED_XATCF_JNDI=OracleOJMS/XATCF
PROP_NAME_CONTROL_TOPIC_JNDI=ESBTopics/Topics/ESB_CONTROL
PROP_NAME_CONTROL_TCF_JNDI=OracleOJMS/XATCF
PROP_NAME_ERROR_TOPIC_JNDI=ESBTopics/Topics/ESB_ERROR
PROP_NAME_ERROR_TCF_JNDI=OracleOJMS/TCF
PROP_NAME_ERROR_XATCF_JNDI=OracleOJMS/XATCF
PROP_NAME_ERROR_RETRY_JNDI=ESBTopics/Topics/ESB_ERROR_RETRY
PROP_NAME_ERROR_RETRY_TCF_JNDI=OracleOJMS/XATCF
PROP_NAME_MONITOR_TOPIC_JNDI=ESBTopics/Topics/ESB_MONITOR
PROP_NAME_MONITOR_TCF_JNDI=OracleOJMS/TCF
PROP_NAME_INITIAL_CONTEXT_FACTORY=com.evermind.server.rmi.RMIInitialContextFactory
ACT_ID_RANGE=400

the only thing you need to change is DT_OC4J_HTTP_PORT and DT_OC4J_HOST It should be same as your loadbalancer url and port number.


Now again go to following location in command prompt

SOA_HOME/integration/esb/bin and run esbsetenv.bat

set ORACLE_HOME,JAVA_HOME and ANT_HOME

also ensure that the CLASSPATH contain SOA_HOME/integration/esb/lib/oraesb.jar

Now do the follwing

ant import-params -Dparamfile=esbparam.properties -DDB_URL=jdbc:oracle:thin:@//localhost:1521/ORCL -DDB_USER=oraesb -DDB_PASSWORD=welcome

Here in DDB_URL you have to provide your jdbc details.

Verify if it is completed successfully.

Finally after this update the esb topics from console

Log in to the ESB console http://host:port/esb
select Default System and Update the following properties

Topic Location as ESBTopics/Topics/ESB_JAVA_DEFERRED
and
Connection Factory Location as OracleOJMS/XATCF

Now restart your server.

Now your cluster is ready.Now deploy a process from jdeveloper in any of the node and you will be able to find it in both the nodes when accessed individually.

No comments: