In this tutorial we will learn how to setup a JBoss Fuse Fabric ensemble in two different modes: with 3 dedicated Fuse servers and with 3 SSH containers
A Fabric Ensemble is a group of one or more Fabric Servers that work together to maintain the registry and other services that are required for the management of the Fabric.

The Fabric Ensemble is based on Apache Zookeeper, which maintains two databases:
- A Centralized configuration which contains the configuration profiles for all of the containers in the fabric.
- A Runtime information database storing the status for all of the containers in the fabric.
The ensemble has to be distributed across multiple machines to provide high-availability. To ensure optimal performance of ZooKeeper and to prevent failures, the ensemble you should deploy an odd number of Fabric Servers (minimum 3).
Let’s see how to create the ensemble with two different settings:
Setting up dedicated ensemble on the same machine
In order to set the JBoss Fuse ensemble on the same machine you have to configure different ports for the services in order to avoid conflicts.
Unzip JBoss fuse in three different folders, so that you have the following configuration:
nodeA/jboss-fuse-6.2.1.redhat-084 nodeB/jboss-fuse-6.2.1.redhat-084 nodeC/jboss-fuse-6.2.1.redhat-084
Edit etc/org.apache.karaf.management.cfg and change rmiRegistryPort, rmiServerPort, assiging an unique port:
#nodeA rmiRegistryPort = 1099 rmiServerPort = 44444 #nodeB rmiRegistryPort = 1100 rmiServerPort = 44445 #nodeC rmiRegistryPort = 1101 rmiServerPort = 44446
Edit etc/org.apache.karaf.shell.cfg and change sshPort, assiging an unique port:
#nodeA sshPort = 8101 #nodeB sshPort = 8102 #nodeC sshPort = 8103
Edit etc/system.properties. Change karaf.name, org.osgi.service.http.port, activemq.port , assiging an unique port:
#nodeA karaf.name = root org.osgi.service.http.port=8181 activemq.port = 61616 #nodeB karaf.name = root2 org.osgi.service.http.port=8182 activemq.port = 61617 #nodeC karaf.name = root3 org.osgi.service.http.port=8183 activemq.port = 61618
Now, start the root Container
$ ./fuse
And create the Fabric:
JBossFuse:karaf@root> fabric:create --new-user administrator --new-user-password password --new-user-role Administrator --zookeeper-password ZooPass1 --resolver manualip --manual-ip 192.168.10.1 --wait-for-provisioning
Now, start the root2 Container and join the Fabric:
$ ./fuse
JBossFuse:karaf@root2> fabric:join 192.168.10.1:2181 Ensemble password: ZooPass1
Now, start the root3 Container and join the Fabric:
$ ./fuse
JBossFuse:karaf@root3> fabric:join 192.168.10.1:2181 Ensemble password: ZooPass1
Run the following command :
JBossFuse:karaf@root> fabric:ensemble-add root2 root3 This will change of the zookeeper connection string. Are you sure want to proceed(yes/no):yes
Run the following command :
JBossFuse:karaf@root> fabric:ensemble-list [id] root root2 root3
Create a Fabric ensemble with three remote SSH containers
First of all create a Fabric
JBossFuse:karaf@root> fabric:create --new-user administrator --new-user-password password --new-user-role Administrator --zookeeper-password ZooPass1 --resolver manualip --manual-ip 192.168.10.1 --wait-for-provisioning
Next create the two SSH containers:
JBossFuse:karaf@root> fabric:container-create-ssh --host 192.168.10.2 --user admin --password admin --path=/data --profile=fabric root2 JBossFuse:karaf@root> fabric:container-create-ssh --host 192.168.10.3 --user admin --password admin --path=/data --profile=fabric root3
Check they are in the same ensemble:
JBossFuse:karaf@root> ensemble-list
If not then add them:
JBossFuse:karaf@root> ensemble-add root2 root3
Check ensemble-list:
Found the article helpful? if so please follow us on Socials