docker搭建zookeeper高可用集群
作者:陈健斌(funkye) github id: a364176773
一.首先挑选合适的zookeeper版本
笔者挑选3.4.14 版本作为本篇教程
1 | docker pull zookeeper:3.4.14 |
二.做好磁盘的映射保证即便数据不丢失
2.1 首先创建相关的zk配置和映射目录
在合适的目录下创建conf,主要放置公用的zoo.cfg,再依次创建每个节点的目录,这里我是采用3个节点进行搭建.
然后我们开始创建zoo.cfg
1 | cd conf |
填入公用配置
1 | clientPort=2181 |
我们预先把3台zk容器的ip先设置好,届时只要固定容器ip即可.
然后我们进入zk1 zk2 zk3 并为这三个文件夹中创建data文件夹
1 | cd zk1 |
以此类推,zk1的myid就是1,zk2就是2.
三.构建容器
3.1 执行构建容器的命令
1 | docker run -itd -p 2182:2181 --network mynetwork --ip 172.18.0.12 -v /home/funkye/zk/zk2/data:/data -v /home/funkye/zk/conf:/conf --privileged=true --name zk2 zookeeper:3.4.14 |
-v 是映射我们的conf到zk容器的conf中,未来模拟扩容的时候,我们只要改外部宿主机上的conf,再按照扩容做法,启动新的节点,再依次重启之前已存在的zk即可.
1 | docker ps |
查看我们是否容器已经在运行
看起来一切都正常了,我们去容器看下各自zk的状态
1 | docker exec -it zk1 /bin/bash |
如果你看到如下信息说明基本你已经搭建完毕了,仅需再去其它几台确认
1 | ZooKeeper JMX enabled by default |
确认完毕后,恭喜你docker 安装zookeeper集群已经完毕了,接下来我们可以测试下写入一些节点信息,看看其它follower节点是否也能接受到,笔者这次首先挑选为follower的zk1节点进行写入,看看是否会转发到leader节点写入.
1 | docker exec -it zk1 /bin/bash |
可以看到目前只有zookeeper一个node节点,我们来写入一个test节点
1 | [zk: localhost:2181(CONNECTED) 0] ls / |
看起来在follower节点写入成功了,我们再去其它节点上验证一下
1 | funkye@LAPTOP-LKAGO3OF:~$ docker exec -it zk2 /bin/bash |
看起来我们顺利的搭建完成了,在follower中的写入被转发到了leader上,再通过zab协议,同步到了follower上.
四.总结
恭喜,看到这里你一定已经搭建完成了zookeeper集群,欢迎之后继续关注我的github和博客
https://github.com/a364176773
https://blog.funkye.icu/