Configuring a Fabric Ensemble

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.

ensemble fabric jboss fuse tutorial

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
Twitter Icon       Facebook Icon       LinkedIn Icon       Mastodon Icon