This page describes an older version of the product. The latest stable version is 14.5.

ZooKeeper


Overview

XAP uses ZooKeeper for storing the id of the primary Space for each partition, this is used for MemoryXtend grid only.When a partition is started, the primary election mechanism will elect a primary Space randomly (or on basis of first-ready) but will wait for the last primary to take the role of primary the Space.

Single instance

To start a ZooKeeper instance on a machine, launch the gs-agent script located in the <XAPHOME>/bin folder. This will start the Grid Service Agent, which is responsible for starting and managing the other Service Grid components (GSC, GSM, etc.). For example, to start two GSCs, two global GSMs and two global LUSs and a ZooKeeper, use the following command:

gs-agent gsa.gsc 2 gsa.global.gsm 2 gsa.global.lus 2 gsa.zk 1

Cluster

For reliable ZooKeeper services, you should deploy ZooKeeper in a cluster known as an Ensemble . As long as a majority of the Ensembles are up, the service will be available. ZooKeeper requires a majority, it is best to use an odd number of machines.

Since every machine that is part of the ZooKeeper ensemble should know about every other machine in the ensemble, ZooKeeper instances are using the XAP_ZOOKEEPER_SERVERS environment variable or the -Dorg.openspaces.grid.zookeeper.servers system property. It accepts a comma separated list of host:port:port, the first port is used by followers to connect to the leader, and the second is for the leader election. By default it is configured with hostname:2888:3888.

For example:

XAP_ZOOKEEPER_SERVERS=host1:2888:3888,host3:2888:3888,host3:2888:3888


Note

The ip/hostname above should be the same as it configured in XAP_NIC_ADDR as it explained here.


Then start a ZooKeeper instances on an odd number of machines like the example below:

Machine A:
gs-agent gsa.gsc 0 gsa.global.gsm 2 gsa.global.lus 2 gsa.zk 1

Machine B:
gs-agent gsa.gsc 0 gsa.global.gsm 2 gsa.global.lus 2 gsa.zk 1

Machine C:
gs-agent gsa.gsc 2 gsa.global.gsm 0 gsa.global.lus 0 gsa.zk 1

Configuration

Like other Grid Service Components you can use the component-specific configuration for specifying ZooKeeper settings. This is set using the environment variable: ZOOKEEPER_JAVA_OPTIONS.

For example:

export XAP_ZOOKEEPER_JAVA_OPTIONS=-Xmx256m

./gs-agent.sh
set XAP_ZOOKEEPER_JAVA_OPTIONS=-Xmx256m

call gs-agent.bat

The ZooKeeper configuration is provided by configuration file which is located by default at <XAP Root>\config\zookeeper\zoo.cfg, you can change it location using XAP_ZOOKEEPER_SERVER_CONFIG_FILE environment variable or the -Dorg.openspaces.grid.zookeeper.config-file system property.

See also:

More information on how to configure ZooKeeper can be found ZooKeeper configuration .