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:

JBossFuse:karaf@root> fabric:ensemble-list
[id]
root
root2
root3

Advertisement

Cookie Alert