6.4. Git Repository Clustering Mechanism

To cluster the Git repository, Red Hat JBoss BRMS uses:

Apache Helix

Provides cluster management functionality that enables you to synchronize and replicate data among the nodes in your cluster. Apache Helix cluster is managed by Apache ZooKeeper. With Apache Helix, you can define a cluster, add nodes to the cluster, remove nodes from the cluster, and perform other cluster-management tasks.

Additional information:

  • Apache Helix needs to be configured on a single node only. The configuration is then stored and distributed by ZooKeeper.
  • Apache Helix cluster is administered by the helix-admin.sh script. See Apache Helix documentation for the list of commands as well as alternative ways of managing Apache Helix cluster.
  • Apache Helix cluster needs exactly one controller, which must be aware of all the nodes. See Apache Helix controller documentation and Apache Helix architecture documentation.
Apache ZooKeeper

Enables you to synchronize and replicate data from the Apache Helix cluster. An Apache ZooKeeper cluster is known as an ensemble and requires a majority of the servers to be functional for the service to be available.

However, an ensemble is not required for any type of clustering. Only a single instance of ZooKeeper is required to allow Red Hat JBoss BRMS to replicate its data; the ZooKeeper ensemble serves to provide redundancy and protect against the failure of ZooKeeper itself.

Additional information:

The relationship between Apache Helix and Apache ZooKeeper:

Figure 6.1. Schema of Red Hat JBoss BRMS Cluster

3639

A typical clustering setup involves the following:

  1. Configuring the cluster using Apache ZooKeeper and Apache Helix. This is required only for design-time clustering.
  2. Configuring clustering on your container. Red Hat JBoss BRMS Installation Guide provides only clustering instructions for Red Hat JBoss EAP 6.

Clustering Maven Repositories

Various Business Central operations publish JAR files to the Business Central’s internal Maven Repository.

This repository exists on the application server file-system as regular files and is not cluster aware. This folder is not synchronized across the various nodes in the cluster and must be synchronized using external tools like rsync.

An alternative to the use of an external synchronization tool is to set the system property org.guvnor.m2repo.dir on each cluster node to point to a SAN or NAS. In such case, clustering of the Maven repository folder is not needed.