Environmental preparation
Node name | ip address |
---|---|
node1 | 192.168.130.20 |
node2 | 192.168.130.19 |
node2 | 192.168.130.21 |
Install docker
slightly
Create mount directory
Create a configuration directory and a data directory (executed on all 3 nodes)
mkdir -p /root/zookeeper/conf
mkdir -p /root/zookeeper/data
mkdir -p /root/zookeeper/log
Write configuration
- Create a configuration file (execute on all 3 nodes)
cd /root/zookeeper/conf
vi zoo.cfg
Write the following
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
clientPort=2181
server.1=192.168.130.20:2888:3888
server.2=192.168.130.19:2888:3888
server.3=192.168.130.21:2888:3888
- Write id to /data/myid file
node1
echo 1 >/root/zookeeper/data/myid
node2
echo 2 >/root/zookeeper/data/myid
node3
echo 3 >/root/zookeeper/data/myid
Start the nodes one by one
node1
docker rm -f zk-node1
docker run -d --network=host --privileged=true -v /root/zookeeper/data:/data -v /root/zookeeper/conf:/conf -v /root/zookeeper/log:/datalog --name zk-node1 --restart always zookeeper:3.4.13
node2
docker rm -f zk-node2
docker run -d --network=host --privileged=true -v /root/zookeeper/data:/data -v /root/zookeeper/conf:/conf -v /root/zookeeper/log:/datalog --name zk-node2 --restart always zookeeper:3.4.13
node3
docker rm -f zk-node3
docker run -d --network=host --privileged=true -v /root/zookeeper/data:/data -v /root/zookeeper/conf:/conf -v /root/zookeeper/log:/datalog --name zk-node3 --restart always zookeeper:3.4.13
View zookeeper status
docker exec -it zk-node1 sh
/zookeeper-3.4.13 # cd bin
/zookeeper-3.4.13/bin # ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower
Go to zk-node2 zk-node3 in turn to check whether the zk status is normal