Redundancy Configuration

Overview

A redundant cluster of the BRM component must consist of multiple BRM servers. There must be at least three servers and ideally an odd number of servers. Each BRM server has to hold configuration information for the entire redundant BRM cluster. The remaining components in the Blueworx Platform also have to hold configuration information for the redundant BRM's. The following section describes in detail the configuration parameters that have to be set on each of the Blueworx Platform components.

There is also a reference diagram of a Blueworx Platform redundant cluster with examples of the configuration sections for each component that can be used as a guide when setting up a redundant environment here: Redundant Platform Example

Configuring the BRM Component

Each BRM server needs to have configuration changed in the following files:
$BRM_CONF/brm.config
This file contains the standard BRM configuration parameters.
$BRM_HOME/zookeeper/data_dir/myid
This file contains a unique ID for each BRM server in the redundant cluster.
$BRM_CONF/zoo.cfg
This file contains configuration related to the redundant cluster. Each BRM server in the redundant cluster must have the same entries in the zoo.cfg file.

$BRM_CONF/brm.config

Update brm.config to make sure that the correct port is being used:

  1. Edit brm.config and make sure that the port in the [brm] section matches the clientPort setting in zoo.cfg

    See here for a description of the port parameter: BRM General Configuration Options

$BRM_HOME/zookeeper/data_dir/myid

Create a myid file on each of the BRM servers in the cluster that contains a unique identifier for the server:

  1. On each server in the cluster run the command:

    echo x > /opt/blueworx/rm/zookeeper/data_dir/myid.

    Where x is replaced by an increasing integer starting at 1.

    For example, on the first server run echo 1 > /opt/blueworx/rm/zookeeper/data_dir/myid, on the second server run: echo 2 > /opt/blueworx/rm/zookeeper/data_dir/myid, etc.

$BRM_CONF/zoo.cfg

Each BRM server in the cluster must have a matching zoo.cfg:

  1. On one BRM server, copy the supplied /opt/blueworx/rm/config/zookeeper/zoo.quorum.cfg.sample into the $BRM_CONF directory and name it zoo.cfg

    cp /opt/blueworx/rm/config/zookeeper/zoo.quorum.cfg.sample $BRM_CONF/zoo.cfg

  2. Open the new zoo.cfg for editing and modify the following 3 lines:

    server.1=serverA:2888:3888
    server.2=serverB:2888:3888
    server.3=serverC:2888:3888
    

    Replace serverA, serverB and serverC with the IP addresses or hostnames of the matching BRM servers in the cluster.

    Where matching refers to the numeric value (server.1, server.2 etc.) and the myid value used in the instructions above.

    Note: It is imperative that the BRM servers are put in the correct order in the zoo.cfg. The server.1 entry must be for the BRM server that has the myid set to 1, server.2 must be the server that has the myid set to 2, etc.
    Note: If you have more than 3 BRM servers then add new entries in for each remaining server following the rules regarding myid and server identifiers described above.

    If dynamic cluster reconfiguration is to be used the following entries must be added.

    reconfigEnabled=true
    standaloneEnabled=false
    skipACL=true
    
    This will allow BRM servers to be added and removed from the quorum. Also the quorum can be reduced to a single BRM.
  3. Copy the configured zoo.cfg to the other BRM servers in the cluster.

Note: With dynamic cluster reconfiguration enabled the first start of BRM will cause the zoo.cfg to be automatically migrated. The server entries are moved out from zoo.cfg into a dynamic file zoo.cfg.dynamic.X. The servers are managed entirely by ZooKeeper and the dynamic file should not be manually edited. During migration a backup of zoo.cfg is created zoo.cfg.bak. The backup can be restored by shutting down BRM and copying the zoo.cfg.bak over the zoo.cfg. More details can be found in: Dynamic Cluster Reconfiguration

Configuring the BVR Component

All BVR servers need to be configured with the hostnames or IP addresses of each of the BRM servers in the redundant cluster. This is configured by setting the address and port in the [brm] section of $BVR_CONF/bvr.config:

address
Must be set to a comma separated list of the hostnames or IP addresses of the BRM servers.
port
Must be set to the port used by the BRM servers in their respective zoo.cfg and brm.config files.

For more information on the [brm] section of the BVR configuration see here: BRM Configuration Options

Configuring the BAM Component

All BAM servers need to be configured with the hostnames or IP addresses of each of the BRM servers in the redundant cluster. This is configured by setting the address and port in the [brm] section of $BAM_CONF/bam.config:

address
Must be set to a comma separated list of the hostnames or IP addresses of the BRM servers.
port
Must be set to the port used by the BRM servers in their respective zoo.cfg and brm.config files.

For more information on the [brm] section of the BAM configuration see here: BRM Configuration Options

Configuring the BSM Component

All BSM servers need to be configured with the hostnames or IP addresses of each of the BRM servers in the redundant cluster. This is configured by setting the address and port in the [brm] section of $BSM_CONF/bsm.config:

address
Must be set to a comma separated list of the hostnames or IP addresses of the BRM servers.
port
Must be set to the port used by the BRM servers in their respective zoo.cfg and brm.config files.

For more information on the [brm] section of the BSM configuration see here: BRM Configuration Options