二、docker搭建zookeeper集群
2019-03-21 本文已影响72人
爱泡脚的CXY
zookeeper搭建集群有两点注意:
1、data目录下myid文件中的数字不能重复(data文件路径可以在zoo.cnf中自己指定)
2、在zoo.cnf中要指定所有的zookeeper的ip和端口
docker搭建zk集群:
(ps:本文使用文件拷贝的方式来配置zk的集群,应该不是最佳的解决方案,dockerHub提供一种方式启动,但是一个zk节点挂点其他也会挂掉,故暂时使用以下方式配置)
一、下载docker
略。。。
二、下载zk镜像
docker pull registry.docker-cn.com/library/zookeeper
三、创建自定义的bridge,这一步必须的,否侧集群中通信只能通过ip比较麻烦,注册到同一个bridge容器间可以通过容器名进行通信
docker network create -d bridge my-net
四、启动三个zk容器
docker run -d --name zookeeper01 -p 22181:2181 --network=my-net registry.docker-cn.com/library/zookeeper
docker run -d --name zookeeper02 -p 22182:2181 --network=my-net registry.docker-cn.com/library/zookeeper
docker run -d --name zookeeper03 -p 22183:2181 --network=my-net registry.docker-cn.com/library/zookeeper
(ps: -p后第一个端口为映射的本地端口可以随便起,但是不能重复)
随便找一个zk容器,拷贝出其中一个zoo.cfg
docker cp 容器id:conf/zoo.cfg zoo.cfg
用vim打开拷贝出来的zoo.cfg,并在末尾增加集群配置:
server.1=zookeeper01:2881:3881
server.2=zookeeper02:2881:3881
server.3=zookeeper03:2881:3881
因为注册到同一个bridge所以可以用容器名字进行通信
···
docker cp 第一个容器id:conf/zoo.cfg zoo.cfg
docker cp 第二个容器id:conf/zoo.cfg zoo.cfg
docker cp 第三个容器id:conf/zoo.cfg zoo.cfg
···
修改完zoo.cfg后我们还要修改容器data/myid,在集群中的id
因为容器中的myid默认都是1,故我们直接修改第二个和第三个
echo 2 >myid
将myid拷贝到第二个容器
docker cp myid:第二个容器id:/data/myid
修改myid为3
vim myid 自己改成三然后拷贝到第三个容器
最后重启三个zk容器
docker restart 第一个容器id
docker restart 第一个容器id
docker restart 第一个容器id
测试:
进入镜像查看状态
docker exec -it 容器id /bin/sh
bin/zkServer.sh status
image.png
image.png
image.png
一个leader两个follower
完毕!!!