Expand IBM BPM cluster using command line

How to add new nodes to existing IBM BPM cluster


Author(s): Tamas Bures | Created: 13 August 2019 | Last modified: 25 June 2022
Tested on: -

Expand IBM BPM cluster using command line

It's not very easy to understand how to add new managed nodes to an existing IBM BPM 8.5.X clusters. See here how.

Export Deployment Environment properties

IBM BPM is using a so called deployment environment properties file to create / modify environments. This file was used when you created your currently working, existing topology. It's the best if you have this file. If you have, jump right to the next section of this tutorial.

If you don't have the file, don't worry, you can create this file using the BPMConfig tool in your existing installation. Follow the steps below:

  1. Navigate to the <BPM_INSTALL_ROOT>/bin directory.

  2. Execute the BPMConfig command line tool:

     BPMConfig.sh -export -profile <Dmgr_profile_name> [-de DE_NAME] -outputDir ~/deployment_env.properties

    If you have only one deployment environment, you can omit the -de DE_NAME configuration option.

    Sample output:

     ./BPMConfig.sh -export -profile Dmgr -outputDir /root/deployment_env
     Logging to file /opt/IBM/WebSphere/AppServer/logs/config/BPMConfig_20190816-080215.log.
     The 'BPMConfig.sh -export -profile Dmgr -de De1 -outputDir /root/deployment_env' command completed successfully.
  3. Save the generated file.

Add information about new node

Now you can declare the new nodes to be added to your environment. Follow the steps below.

  1. Open the <De_NAME>.properties file with a text editor.

  2. Add the following settings to declare the new node(s) and profile(s). You can copy the existing Node properties: NodeName section from the file itself.

     ###########################
     # Node properties: Node<X> #
     ###########################
     bpm.de.node.<X>.name=Node<X>
     # If the host name is the same as the deployment manager, this node will be created on the same computer. Do not use localhost for environments that span multiple hosts.
     bpm.de.node.<X>.hostname=<hostname of the new node>
     # The installation location of the IBM BPM product. If you want to use a backslash character (\) in your properties file, you must use an escape backslash before it; for example, bpm.de.node.1.installPath=C:\\IBM\\BPM\\v8.6.
     bpm.de.node.<X>.installPath=<Installed binary's path>
     # The name of the node profile.
     bpm.de.node.<X>.profileName=Node<X>

    So, for example, if I want to add a second node to my environment, I'll use the following:

     ###########################
     # Node properties: Node02 #
     ###########################
     bpm.de.node.2.name=Node02
     # If the host name is the same as the deployment manager, this node will be created on the same computer. Do not use localhost for environments that span multiple hosts.
     bpm.de.node.2.hostname=bpm2.test
     # The installation location of the IBM BPM product. If you want to use a backslash character (\) in your properties file, you must use an escape backslash before it; for example, bpm.de.node.1.installPath=C:\\IBM\\BPM\\v8.6.
     bpm.de.node.2.installPath=/opt/IBM/WebSphere/AppServer
     # The name of the node profile.
     bpm.de.node.2.profileName=Node02
  3. Add the following settings to declare the new server members and add them to the corresponding cluster(s). You can copy the existing Cluster member properties: ClusterMemberName section from the file itself.

     ################################################
     # Cluster member properties: ClusterMember<X> #
     ################################################
     bpm.de.node.<X>.clusterMember.1.name=ClusterMember<X>
     # The cluster that this cluster member belongs to. This value should correspond to the name of a cluster defined in this file.
     bpm.de.node.<X>.clusterMember.1.cluster=<ClusterName>
     # The proportion of requests that are sent to this cluster member.
     bpm.de.node.<X>.clusterMember.1.weight=<weight>

    So, for example, if I want to add a new member to each clusters, I'll use the following:

     ################################################
     # Cluster member properties: SupClusterMember2 #
     ################################################
     bpm.de.node.2.clusterMember.1.name=SupClusterMember2
     # The cluster that this cluster member belongs to. This value should correspond to the name of a cluster defined in this file.
     bpm.de.node.2.clusterMember.1.cluster=SupCluster
     # The proportion of requests that are sent to this cluster member.
     bpm.de.node.2.clusterMember.1.weight=2
    
     ################################################
     # Cluster member properties: AppClusterMember2 #
     ################################################
     bpm.de.node.2.clusterMember.2.name=AppClusterMember2
     # The cluster that this cluster member belongs to. This value should correspond to the name of a cluster defined in this file.
     bpm.de.node.2.clusterMember.2.cluster=AppCluster
     # The proportion of requests that are sent to this cluster member.
     bpm.de.node.2.clusterMember.2.weight=2
    
     ###############################################
     # Cluster member properties: MEClusterMember2 #
     ###############################################
     bpm.de.node.2.clusterMember.3.name=MEClusterMember2
     # The cluster that this cluster member belongs to. This value should correspond to the name of a cluster defined in this file.
     bpm.de.node.2.clusterMember.3.cluster=MECluster
     # The proportion of requests that are sent to this cluster member.
     bpm.de.node.2.clusterMember.3.weight=2

    Make sure, that the bpm.de.node.<X> prefix matches with the firstly created node prefix.

  4. Save the file and upload to the server(s) where you want to create the new managed nodes and profiles.

Create new node(s)

To create the new nodes, simply copy the modified properties file to all of your new node(s) (if you add multiple) and execute the following command on each:

BPMConfig.sh -create -de ~/deployment_env.properties

Important note: Be aware, to execute the command only one of your servers at the same time, because the BPMConfig tool first will create the new profile and node, then it federates the new node to the deployment manager. If you rush the Dmgr, the federation might fail if you try to add all the new nodes at the same time. So, one by one. :)