本文将记录使用zookeeper镜像,分别在两种场景下搭建3节点集群:1.在一台机器上使用容器方式安装zookeeper集群;2.在三台机器上使用容器方式安装zookeeper集群。
此次使用的zookeeper镜像是官方镜像。
先介绍第一种方式:
1.在宿主机分别建立3个zookeeper容器ENV参数文件,编辑EVN参数文件容器启动会传入的环境变量。
容器:zookeeper1
文件名:/root/zookeeper/zookeeperetc/zookeeper1.list
文件内容:
ZOO_MY_ID=1 ZOO_SERVERS=server.1=0.0.0.0:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181 TZ=Asia/Shanghai
容器:zookeeper2
文件名:/root/zookeeper/zookeeperetc/zookeeper2.list
文件内容:
ZOO_MY_ID=2 ZOO_SERVERS=server.1=zookeeper1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zookeeper3:2888:3888;2181 TZ=Asia/Shanghai
容器:zookeeper3
文件名:/root/zookeeper/zookeeperetc/zookeeper3.list
文件内容:
ZOO_MY_ID=3 ZOO_SERVERS=server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181 TZ=Asia/Shanghai
2.建立宿主机映射目录,以便将zookeeper数据映射出来。
mkdir -p /root/zookeeper/zookeeperdata/zookeeper1/data mkdir -p /root/zookeeper/zookeeperdata/zookeeper1/datalog mkdir -p /root/zookeeper/zookeeperdata/zookeeper2/data mkdir -p /root/zookeeper/zookeeperdata/zookeeper2/datalog mkdir -p /root/zookeeper/zookeeperdata/zookeeper3/data mkdir -p /root/zookeeper/zookeeperdata/zookeeper3/datalog
3.建立容器网络。
docker network create zk_network
4.启动容器。
docker run --name zookeeper1 -d --network zk_network -v /root/zookeeper/zookeeperdata/zookeeper1/data:/data -v /root/zookeeper/zookeeperdata/zookeeper1/datalog:/datalog --env-file /root/zookeeper/zookeeperetc/zookeeper1.list zookeeper:3.7.0 docker run --name zookeeper2 -d --network zk_network -v /root/zookeeper/zookeeperdata/zookeeper2/data:/data -v /root/zookeeper/zookeeperdata/zookeeper2/datalog:/datalog --env-file /root/zookeeper/zookeeperetc/zookeeper2.list zookeeper:3.7.0 docker run --name zookeeper3 -d --network zk_network -v /root/zookeeper/zookeeperdata/zookeeper3/data:/data -v /root/zookeeper/zookeeperdata/zookeeper3/datalog:/datalog --env-file /root/zookeeper/zookeeperetc/zookeeper3.list zookeeper:3.7.0
5.验证集群。
找到leader,停止该容器。
[root@VM_0_11_centos zookeeperdata]# docker exec -it zookeeper2 /bin/bash root@aebacb212045:/apache-zookeeper-3.7.0-bin# root@aebacb212045:/apache-zookeeper-3.7.0-bin# root@aebacb212045:/apache-zookeeper-3.7.0-bin# root@aebacb212045:/apache-zookeeper-3.7.0-bin# root@aebacb212045:/apache-zookeeper-3.7.0-bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader root@aebacb212045:/apache-zookeeper-3.7.0-bin#
查看新的leader。
[root@VM_0_11_centos zookeeperdata]# docker stop zookeeper2 zookeeper2 [root@VM_0_11_centos zookeeperdata]# docker exec -it zookeeper1 /bin/bash root@1f6bc695b17d:/apache-zookeeper-3.7.0-bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower root@1f6bc695b17d:/apache-zookeeper-3.7.0-bin# exit exit [root@VM_0_11_centos zookeeperdata]# docker exec -it zookeeper3 /bin/bash root@5ef22706543d:/apache-zookeeper-3.7.0-bin# zkServer zkServer-initialize.sh zkServer.cmd zkServer.sh root@5ef22706543d:/apache-zookeeper-3.7.0-bin# zkServer zkServer-initialize.sh zkServer.cmd zkServer.sh root@5ef22706543d:/apache-zookeeper-3.7.0-bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader root@5ef22706543d:/apache-zookeeper-3.7.0-bin# exit exit [root@VM_0_11_centos zookeeperdata]#
验证成功。
介绍第二种部署模式:
1.分别在三个机器上创建EVN文件。
新建文件/root/docker_env_file/zookeeper/zookeeper.list
#A机器: ZOO_MY_ID=1 ZOO_SERVERS=server.1=0.0.0.0:2888:3888;2181 server.2=B_IP:2888:3888;2181 server.3=C_IP:2888:3888;2181 TZ=Asia/Shanghai #B机器: ZOO_MY_ID=2 ZOO_SERVERS=server.1=A_IP:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=C_IP:2888:3888;2181 TZ=Asia/Shanghai #C机器: ZOO_MY_ID=3 ZOO_SERVERS=server.1=A_IP:2888:3888;2181 server.2=B_IP:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181 TZ=Asia/Shanghai
2.分别在三个机器创建zookeeper数据目录。
mkdir -p /opt/zookeeper/data mkdir -p /opt/zookeeper/datalog
3.分别在三个机器启动容器。
docker run --name zookeeper -d -v /opt/zookeeper/data:/data -v /opt/zookeeper/datalog:/datalog -env-file /root/docker_env_file/zookeeper/zookeeper.list -p 2181:2181 -p 2888:2888 -p3888:3888 zookeeper:3.7.0
4.验证方法同上。



