Skip to main content

Configuring Cluster in IBM Sterling B2B Integrator

In this article, I will show you how to configure a horizontal cluster in IBM Sterling B2B Integrator  with two nodes.  

Cluster setup provides 24x7 high availability. Even if one of the node goes down, the other node can serve the requests. Cluster is needed to share the work load which is possible through load balancing in Web server. The nodes in the cluster share the same database and they ensure that all the nodes are consistent and show the same output to customer.

There are two ways to install Sterling B2B Integrator : 
a. Using GUI.
b. Using Response files. 

In this article, I have used response files for installing Sterling Integrator v5.2.6.1 with ifix level 5. Starting from version 5.2.6, Sterling Integrator uses IBM Installation Manager (IIM) for installation.  In Node1, install sterling integrator in the same way as you do for a standalone system. 

1. Set lang as en_US.
export LANG=en_US
2. echo $LANG
en_US

3. Install the base version 5.2.6.1. Get the installables Media_IM_5020601.zip for version 5.2.6.1.
4. Unzip the installable zip.
In that extract, unzip Common_Repo.zip. You will get b2birepo folder. 
5. Here is the response file for node 1 base:Response5261.xml
---------------------------------------------------------------------------------------------
<?xml version='1.0' encoding='UTF-8'?>
<agent-input>
  <variables>
    <variable name='sharedLocation' value='/home/user/IBM/shared'/>
  </variables>
  <server>
    <repository location='/home/user/5261/Media/b2birepo'/>
  </server>
  <profile id='Sterling IntegratorMalar5261New' installLocation='/home/user/5261/cust_5261_node1'>
    <data key='eclipseLocation' value='/home/user/5261/cust_5261_node1'/>
    <data key='user.import.profile' value='false'/>
    <data key='cic.selector.os' value='linux'/>
    <data key='cic.selector.arch' value='x86_64'/>
    <data key='cic.selector.ws' value='gtk'/>
    <data key='cic.selector.nl' value='en'/>
    <data key='user.sb.FIPS_MODE,com.ibm.sterling.integrator.install.offering' value='false'/>
    <data key='user.sb.NIST_MODE,com.ibm.sterling.integrator.install.offering' value='off'/>
    <data key='user.sb.INSTALL_SPE_INTEGRATION,com.ibm.sterling.integrator.install.offering' value=''/>
    <data key='user.sb.LICENSE_FILE,com.ibm.sterling.integrator.install.offering' value='Core_License.xml'/>
    <data key='user.sb.INSTALL_IP,com.ibm.sterling.integrator.install.offering' value='1.2.3.4'/>
    <data key='user.sb.PORT1,com.ibm.sterling.integrator.install.offering' value='23000'/>
    <data key='user.sb.CLUSTER,com.ibm.sterling.integrator.install.offering' value='false'/>
    <data key='user.CLUSTER_NODE_NUM,com.ibm.sterling.integrator.install.offering' value=''/>
    <data key='user.sb.DB_CREATE_SCHEMA,com.ibm.sterling.integrator.install.offering' value='true'/>
    <data key='user.sb.DEBUG,com.ibm.sterling.integrator.install.offering' value='false'/>
    <data key='user.sb.UPGRADE,com.ibm.sterling.integrator.install.offering' value='false'/>
    <data key='user.sb.PROCESSORS,com.ibm.sterling.integrator.install.offering' value='2'/>
    <data key='user.sb.MEMORY,com.ibm.sterling.integrator.install.offering' value='3072'/>
    <data key='user.sb.JVM_LOC,com.ibm.sterling.integrator.install.offering' value='/JDK/ibm-java-x86_64-70-sr9-fp50/'/>
    <data key='user.sb.JCE_DIST_FILE,com.ibm.sterling.integrator.install.offering' value='/jce/1_6_0_ibm/unrestricted.zip'/>
    <data key='user.sb.APSERVER_PASS,com.ibm.sterling.integrator.install.offering' value='xyz=='/>
    <data key='user.confirmPassphrase,com.ibm.sterling.integrator.install.offering' value='xyz=='/>
    <data key='user.sb.SI_ADMIN_MAIL_ADDR,com.ibm.sterling.integrator.install.offering' value='abc@ibm.com'/>
    <data key='user.sb.SI_ADMIN_SMTP_HOST,com.ibm.sterling.integrator.install.offering' value='abc.in.com'/>
    <data key='user.sb.DB_VENDOR,com.ibm.sterling.integrator.install.offering' value='Oracle'/>   
    <data key='user.sb.DB_USER,com.ibm.sterling.integrator.install.offering' value='xyz'/>
    <data key='user.sb.DB_PASS,com.ibm.sterling.integrator.install.offering' value='abc=='/>
    <data key='user.dbconfirmPassword,com.ibm.sterling.integrator.install.offering' value='abc=='/>
    <data key='user.sb.DB_DATA,com.ibm.sterling.integrator.install.offering' value='bcd'/>
    <data key='user.sb.DB_HOST,com.ibm.sterling.integrator.install.offering' value='3.4.5.6'/>
    <data key='user.sb.DB_PORT,com.ibm.sterling.integrator.install.offering' value='1521'/>
    <data key='user.sb.DB_DRIVERS,com.ibm.sterling.integrator.install.offering' value='/oracle/11_2_0_1_0/ojdbc6.jar'/>
  </profile>
  <install modify='false'>
    <!-- IBM B2B Sterling Integrator 5.2.6.1 -->
    <offering profile='Sterling IntegratorMalar5261New' id='com.ibm.sterling.integrator.install.offering' features='main.feature,filegateway.feature' installFixes='none'/>
  </install>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
  <preference name='com.ibm.cic.common.core.preferences.connectTimeout' value='30'/>
  <preference name='com.ibm.cic.common.core.preferences.readTimeout' value='45'/>
  <preference name='com.ibm.cic.common.core.preferences.downloadAutoRetryCount' value='0'/>
  <preference name='offering.service.repositories.areUsed' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.ssl.nonsecureMode' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.http.disablePreemptiveAuthentication' value='false'/>
  <preference name='http.ntlm.auth.kind' value='NTLM'/>
  <preference name='http.ntlm.auth.enableIntegrated.win32' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.preserveDownloadedArtifacts' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.keepFetchedFiles' value='false'/>
  <preference name='PassportAdvantageIsEnabled' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.searchForUpdates' value='false'/>
  <preference name='com.ibm.cic.agent.ui.displayInternalVersion' value='false'/>
  <preference name='com.ibm.cic.common.sharedUI.showErrorLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showWarningLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showNoteLog' value='true'/>
</agent-input>
---------------------------------------------------------------------------------------------
6. Go to IIM directory and run the command :
/home/user/IBM/IBMIMShared/eclipse/tools> ./imcl -acceptLicense -input /home/user/5261/Media/Response5261.xml 
Note: Make sure that the port you have specified is available. Observe that the cluster value is false and node number is blank for Node 1.
 <data key='user.sb.CLUSTER,com.ibm.sterling.integrator.install.offering' value='false'/>
<data key='user.CLUSTER_NODE_NUM,com.ibm.sterling.integrator.install.offering' value=''/>
7. Once the installation is complete, install the ifix level 5.
8. Get the installables Media_IM_5020601_5.zip for ifix level 5. Unzip the zip. In that zip extract, unzip Common.zip, you will get b2bifixrepo folder.
9. Here is the response file for installing 5261_5.
Response5261_5.xml
----------------------------------------------------------------------------------------------------
<?xml version='1.0' encoding='UTF-8'?>
  <agent-input>

  <variables>

    <variable name='sharedLocation' value=
'/home/user/IBM/shared'/>
    <variable name='offeringProfile' value='Sterling IntegratorMalar5261New'/>
    <variable name='b2biFixNum' value='5.2.6.1_5'/>
  </variables>
 
  <server>
     <repository location='
/home/user/5261/Media/ifix5/b2bifixrepo'/>
  </server>
 
  <install modify='false'>
    <offering profile='${offeringProfile}' id='fix_${b2biFixNum}'/>
  </install>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
  <preference name='com.ibm.cic.common.core.preferences.connectTimeout' value='30'/>
  <preference name='com.ibm.cic.common.core.preferences.readTimeout' value='45'/>
  <preference name='com.ibm.cic.common.core.preferences.downloadAutoRetryCount' value='0'/>
  <preference name='offering.service.repositories.areUsed' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.ssl.nonsecureMode' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.http.disablePreemptiveAuthentication' value='false'/>
  <preference name='http.ntlm.auth.kind' value='NTLM'/>
  <preference name='http.ntlm.auth.enableIntegrated.win32' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.preserveDownloadedArtifacts' value='true'/>
  <preference name='com.ibm.cic.common.core.preferences.keepFetchedFiles' value='false'/>
  <preference name='PassportAdvantageIsEnabled' value='false'/>
  <preference name='com.ibm.cic.common.core.preferences.searchForUpdates' value='false'/>
  <preference name='com.ibm.cic.agent.ui.displayInternalVersion' value='false'/>
  <preference name='com.ibm.cic.common.sharedUI.showErrorLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showWarningLog' value='true'/>
  <preference name='com.ibm.cic.common.sharedUI.showNoteLog' value='true'/>
</agent-input>

----------------------------------------------------------------------------------------------------
 10. Go to IIM directory and run the command :
/home/user/IBM/IBMIMShared/eclipse/tools> ./imcl -acceptLicense -input /home/user/5261/Media/Response5261_5.xml
Note: Ensure that SI is stopped and not running. 

11. Once the installation is complete, start the server and confirm that SI works fine.

Now, lets install Node 2. In a cluster configuration, Node 2 will share the same database of node 1. 

Install SI in node2 with the below 2 lines modified in Response_5261.xml


<data key='user.sb.CLUSTER,com.ibm.sterling.integrator.install.offering' value='true'/>
    <data key='user.CLUSTER_NODE_NUM,com.ibm.sterling.integrator.install.offering' value='2'/>


Install ifix level 5 in node 2. Now, SI 5.2.6.1_5 is intalled in node1 and node2.
12. Stop SI in node1 and run 

.node1> startCluster.sh 1
node1 > ./run.sh restart

13. In node2, run
node2 > startCluster.sh 2
node2> ./run.sh

Now, we have completed the cluster configuration. To validate, if cluster is installed properly, check the noapp.log(under install/logs folder) in node1 and node2.

It should display :
 --------------------------------------------------------------------------------------------
-sh-4.3$ grep -ri "Member joined" ./
./noapp.log.D20170331.T050249:[2017-03-31 05:04:19.063] ALL 000000000000 GLOBAL_SCOPE ** Member joined: node014vm-3082
./noapp.log.D20170331.T050249:[2017-03-31 05:05:08.809] ALL 000000000000 GLOBAL_SCOPE ** Member joined: node011vm-57631

--------------------------------------------------------------------------------------------
Run the below sample Business process as mentioned in link :
https://www.ibm.com/support/knowledgecenter/SS3JSW_5.2.0/com.ibm.help.sys_maint_cklist.doc/SI_SysMaintenChecklist.html

Ensure that the BP runs successfully without any failure. This confirms that the cluster is configured properly.

Here is another BP which you need to create in node1 with the below process xml.


<process name="Cluster_Test">
  <sequence name="sleep">
    <operation name="Sleepy1">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node1</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy2">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node1</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy3">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node2</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy4">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node2</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy3">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node2</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy4">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node2</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy9">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node1</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
    <operation name="Sleepy10">
      <participant name="TestSleepService"/>
      <output message="Xout">
        <assign to="SLEEP_INTERVAL">20</assign>
        <assign to="mandatoryNode">node1</assign>
        <assign to="." from="*"></assign>
      </output>
      <input message="Xin">
        <assign to="." from="*"></assign>
      </input>
    </operation>
  </sequence>
</process> 


Reference links : 
-----------------------------
http://www-01.ibm.com/support/docview.wss?uid=swg21980119
http://www-01.ibm.com/support/docview.wss?uid=swg21536487
https://www.ibm.com/support/knowledgecenter/en/SS3JSW_5.2.0/com.ibm.help.upgrade_unix_clus_523.doc/SI_Start-ClusterSI_Unix_Clust.html

Comments

  1. I really appreciate information shared above. It’s of great help. If someone want to learn Online (Virtual) instructor lead live training in IBM STERLING B2B INTEGRATOR kindly contact us http://www.maxmunus.com/contact
    MaxMunus Offer World Class Virtual Instructor led training on IBM STERLING B2B INTEGRATOR We have industry expert trainer. We provide Training Material and Software Support. MaxMunus has successfully conducted 100000+ trainings in India, USA, UK, Australlia, Switzerland, Qatar, Saudi Arabia, Bangladesh, Bahrain and UAE etc.
    For Demo Contact us.
    Saurabh Srivastava
    MaxMunus
    E-mail: saurabh@maxmunus.com
    Skype id: saurabhmaxmunus
    Ph:+91 8553576305 / 080 - 41103383
    http://www.maxmunus.com/

    ReplyDelete
  2. Hi Malar,

    Thanks for sharing, Could you also share Cluster installation using GUI please. It will be great help.

    ReplyDelete

Post a Comment

Popular posts from this blog

Document Keyword Replace Service in IBM Sterling B2B Integrator

In IBM Sterling B2B Integrator, there are situations where you want to replace a specific character in a document with another character. Document Keyword Replace service provides you the facility to  find and replace text in a document. You need to configure a Service and Business Process for this functionality in IBM Sterling B2B Integrator.   Please do the following to create and configure the service : 1. Login to IBM Sterling Integrator 5.2.6.1.  Go to Deployment - Configuration. Create a New Service of type : Document Keyword Replace Service. 2. Enter Keyword start and end definition as $ as shown below. Click Next. 3. Check the Checkbox to enable the service for Business Processes as shown below : 4. Click Finish. The Service is now created. 5. Go to Business Processes - Manager. Create a Process Definition "DKR_regular". This is the process definition xml.   Example:1 <process name="DKR_regular">  <sequence>   <operation nam