Runs an Exhibitor-managed ZooKeeper instance using S3 for backups and automatic node discovery.
Available on the Docker Index as mbabineau/zookeeper-exhibitor:
docker pull mbabineau/zookeeper-exhibitor
- Exhibitor 1.5.5
- ZooKeeper 3.4.6
The container expects the following environment variables to be passed in:
HOSTNAME
- addressable hostname for this node (Exhibitor will forward users of the UI to this address)S3_BUCKET
- (optional) bucket used by Exhibitor for backups and coordinationS3_PREFIX
- (optional) key prefix withinS3_BUCKET
to use for this clusterAWS_ACCESS_KEY_ID
- (optional) AWS access key ID with read/write permissions onS3_BUCKET
AWS_SECRET_ACCESS_KEY
- (optional) secret key forAWS_ACCESS_KEY_ID
AWS_REGION
- (optional) the AWS region of the S3 bucket (defaults tous-west-2
)ZK_PASSWORD
- (optional) the HTTP Basic Auth password for the "zk" userZK_DATA_DIR
- (optional) Zookeeper data directoryZK_LOG_DIR
- (optional) Zookeeper log directoryHTTP_PROXY_HOST
- (optional) HTTP Proxy hostnameHTTP_PROXY_PORT
- (optional) HTTP Proxy portHTTP_PROXY_USERNAME
- (optional) HTTP Proxy usernameHTTP_PROXY_PASSWORD
- (optional) HTTP Proxy password
Starting the container:
docker run -p 8181:8181 -p 2181:2181 -p 2888:2888 -p 3888:3888 \
-e S3_BUCKET=<bucket> \
-e S3_PREFIX=<key_prefix> \
-e AWS_ACCESS_KEY_ID=<access_key> \
-e AWS_SECRET_ACCESS_KEY=<secret_key> \
-e HOSTNAME=<host> \
mbabineau/zookeeper-exhibitor:latest
Once the container is up, confirm Exhibitor is running:
$ curl -s localhost:8181/exhibitor/v1/cluster/status | python -m json.tool
[
{
"code": 3,
"description": "serving",
"hostname": "<host>",
"isLeader": true
}
]
See Exhibitor's wiki for more details on its REST API.
You can also check Exhibitor's web UI at http://<host>:8181/exhibitor/v1/ui/index.html
Then confirm ZK is available:
$ echo ruok | nc <host> 2181
imok