A simple docker image to create a zookeeper cluster without much pain.
There are several zookeeper docker images for creating standalone instances of zookeeper and running them. But there are no images that help in creating a zookeeper cluster across a single host or a multi-host environment. This image will help you to achieve the same.
docker pull jeygeethan/zookeeper-cluster
Go here : kafka-cluster
Follow these steps:
- Figure out if you will know the IP addresses/hosts of the hosts where you will be running the zookeepers containers.
- UCP/Swarm - You can figure this out if you are using a constraint node (-e constraint:node==host_name) in your docker-compose.yml file
- Disconnected hosts - You can figure this out by defining the set of hosts where you will deploy the container
- Start running the containers in respective hosts or compile a sample docker-compose.yml as given below
The example given below is for a three node cluster. Change the parameters to suit your needs. $ID means the id/number of the node (either 1,2,3 etc) you are currently trying to run.
docker run -d --restart=always \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-v /var/lib/zookeeper:/var/lib/zookeeper \
-v /var/log/zookeeper:/var/log/zookeeper \
jeygeethan/zookeeper-cluster zookeeper_1_ip_or_hostname,zookeeper_2_ip_or_hostname,zookeeper_3_ip_or_hostname $ID
Assume the three nodes are as follows:
- docker_host_1
- docker_host_2
- docker_host_3
docker run -d --restart=always \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-v /var/lib/zookeeper:/var/lib/zookeeper \
-v /var/log/zookeeper:/var/log/zookeeper \
jeygeethan/zookeeper-cluster docker_host_1,docker_host_2,docker_host_3 1
docker run -d --restart=always \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-v /var/lib/zookeeper:/var/lib/zookeeper \
-v /var/log/zookeeper:/var/log/zookeeper \
jeygeethan/zookeeper-cluster docker_host_1,docker_host_2,docker_host_3 2
docker run -d --restart=always \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-v /var/lib/zookeeper:/var/lib/zookeeper \
-v /var/log/zookeeper:/var/log/zookeeper \
jeygeethan/zookeeper-cluster docker_host_1,docker_host_2,docker_host_3 3
version: '2'
services:
zk_1:
image: jeygeethan/zookeeper-cluster
container_name: zk_1
ports:
- '2181:2181'
- '2888:2888'
- '3888:3888'
volumes:
- /var/lib/zookeeper:/var/lib/zookeeper
- /var/log/zookeeper:/var/log/zookeeper
command: docker_host_1,docker_host_2,docker_host_3 1
environment:
- constraint:node==docker_host_1
networks:
- some_overlay_network
zk_2:
image: jeygeethan/zookeeper-cluster
container_name: zk_2
ports:
- '2181:2181'
- '2888:2888'
- '3888:3888'
volumes:
- /var/lib/zookeeper:/var/lib/zookeeper
- /var/log/zookeeper:/var/log/zookeeper
command: docker_host_1,docker_host_2,docker_host_3 2
environment:
- constraint:node==docker_host_2
networks:
- some_overlay_network
zk_3:
image: jeygeethan/zookeeper-cluster
container_name: zk_3
ports:
- '2181:2181'
- '2888:2888'
- '3888:3888'
volumes:
- /var/lib/zookeeper:/var/lib/zookeeper
- /var/log/zookeeper:/var/log/zookeeper
command: docker_host_1,docker_host_2,docker_host_3 3
environment:
- constraint:node==docker_host_3
networks:
- some_overlay_network
networks:
some_overlay_network:
external: true