devopt

二、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
完毕!!!

上一篇下一篇

猜你喜欢

热点阅读