Show Table of Contents
5.2. Configuring Clustering on Red Hat JBoss EAP
The information provided in this section is a simple clustering recipe. For additional information on clustering refer to Red Hat JBoss EAP documentation.
When using JBoss EAP clustering, a single JBoss EAP domain controller exists with other JBoss EAP slaves connecting to it as management users. Deployment of Business Central and dashbuilder can be done as a management user on a domain controller, and the WAR deployments will be distributed to other members of the JBoss EAP cluster.
To configure clustering on Red Hat JBoss EAP 6, do the following:
- Configure individual server nodes in the
main-server-groupelement in the$EAP_HOME/domain/configuration/host.xmlfile with properties defined in Table 5.1, “Cluster node properties”:Note that a when configuring a JBoss EAP cluster with Zookeeper, a different number of JBoss EAP nodes than Zookeeper nodes is possible (keeping in mind that Zookeeper should to have an odd number of nodes). However, having the same node count for both Zookeeper and JBoss EAP is considered best practice.Table 5.1. Cluster node properties
Property name Value Description org.uberfire.nio.git.dir/home/jbrm/node[N]/repoGIT (VFS) repository location on node[N]jboss.node.namenodeOnenode name unique within the clusterorg.uberfire.cluster.idbrms-clusterHelix cluster nameorg.uberfire.cluster.zkserver1:2181Zookeeper locationorg.uberfire.cluster.local.idnodeOne_12345unique ID of the Helix cluster nodeNote that:is replaced with_.org.uberfire.cluster.vfs.lockvfs-reponame of the resource defined on the Helix clusterorg.uberfire.nio.git.daemon.port9418port used by the VFS repo to accept client connectionsThe port must be unique for each cluster member.org.uberfire.metadata.index.dir/home/jbrm/node[N]/indexlocation where the index for search is to be created (maintained by Apache Lucene)org.uberfire.nio.git.ssh.port8003the unique port number for ssh access to the GIT repo for a cluster running on physical machines. org.uberfire.nio.git.daemon.hostnodeOnethe name of the daemon host machine in a physical cluster. org.uberfire.nio.git.ssh.hostnodeOnethe name of the SSH host machine in a physical cluster. org.uberfire.nio.git.ssh.hostport and org.uberfire.nio.git.daemon.hostport8003 and 9418In a virtualized environment, the outside port to be used. Example 5.5. Cluster nodeOne configuration
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/brms/nodeone" boot-time="false"/> <property name="jboss.node.name" value="nodeOne" boot-time="false"/> <property name="org.uberfire.cluster.id" value="brms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeOne_12345" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.cluster.autostart" value="true" boot-time="true"/> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbrm/nodeone" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodeone" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeOne" /> <property name="org.uberfire.nio.git.ssh.host" value="nodeOne" /> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> </system-properties>
Example 5.6. Cluster nodeTwo configuration
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/brms/nodetwo" boot-time="false"/> <property name="jboss.node.name" value="nodeTwo" boot-time="false"/> <property name="org.uberfire.cluster.id" value="brms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeTwo_12346" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.cluster.autostart" value="true" boot-time="true"/> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbrm/nodetwo" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodetwo" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeTwo" /> <property name="org.uberfire.nio.git.ssh.host" value="nodeTwo" /> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> </system-properties>
Example 5.7. Cluster nodeThree configuration
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/brms/nodethree" boot-time="false"/> <property name="jboss.node.name" value="nodeThree" boot-time="false"/> <property name="org.uberfire.cluster.id" value="brms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeThree_12347" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.cluster.autostart" value="true" boot-time="true"/> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbrm/nodethree" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodethree" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeThree" /> <property name="org.uberfire.nio.git.ssh.host" value="nodeThree" /> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> </system-properties>
- Add management users as instructed in the Administration and Configuration Guide for Red Hat JBoss EAP and application users as instructed in Red Hat JBoss BRMS Administration and Configuration Guide.
- Start the application server:
]$ $JBOSS_HOME/bin/domain.sh
- Check that the nodes are available.
Deploy the Business Central application to your servers:
- Log on as the management user to the server Administration console of your domain and add the new deployments using the Runtime view of the console. Once the deployment is added to the domain, assign it to the correct server group (
main-server-group).
Note
It is important users explicitly check deployment unit readiness with every cluster member.
When a deployment unit is created on a cluster node, it takes some time before it is distributed among all cluster members. Deployment status can be checked via UI and REST, however if the query goes to the node where the deployment was originally issued, the answer is
deployed. Any request targeting this deployment unit sent to a different cluster member fails with DeploymentNotFoundException.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.