一、前言
在单台服务器上,部署三个docker容器,搭建zookeeper集群
二、过程
1.准备工作
这里我使用的是docker来搭建zookeeper集群,所以必须提前准备好以下内容:
安装docker
拉取zookeeper镜像(这里我用的是3.4.10版本)
docker pull zookeeper:3.4.10
2.开始搭建
单个节点不能叫做集群,而两个节点也不好做集群,这里我创建了三个zookeeper节点来搭建集群(友情提示:最好是用奇数个节点做集群)
(1)利用镜像启动三个zookeeper容器,分别运行以下三个命令
docker run --name zk01 -p 2181:2181 -d zookeeper:3.4.10
docker run --name zk02 -p 2182:2181 -d zookeeper:3.4.10
docker run --name zk03 -p 2183:2181 -d zookeeper:3.4.10
可以看到我这里已经有了三个zookeeper容器,注意宿主机要用不同的端口去映射zookeeper的2181端口
(2)查看容器的运行状态(主要是ip地址,以zk01为例)
docker inspect zk01
在我的机器上zk01、zk02、zk03分别对应
172.17.0.3
172.17.0.4
172.17.0.5
(以个人机器为准)
(3)修改配置文件(这里以容器zk01为例)
进入容器
docker exec -it zk01 bash
查看配置文件
当启动zookeeper服务时,需要使用的配置文件是zoo.cfg,所以我们修改zoo.cfg
vi zoo.cfg
此时可能vi或者vim命令无法使用,需要在docker容器执行以下命令:
apt-get update
apt-get install vim
在配置文件中添加
server.1=172.17.0.7:2888:3888
server.2=172.17.0.8:2888:3888
server.3=172.17.0.9:2888:3888
请注意,如果你是在Linux环境下直接搭建zookeeper,请修改本机所在节点的ip为0.0.0.0
例如我当前节点是server.1,则ip修改为0.0.0.0(非docker环境)
server.1=0.0.0.0:2888:3888
server.2=172.17.0.8:2888:3888
server.3=172.17.0.9:2888:3888
这里172.17.0.x表示的是三台zookeeper容器对应的ip地址;2888是zookeeper容器间通信的端口,3888是zookeeper选举投票的端口,一般来说都是固定的
而server后面的数字表示zk节点在容器中的编号,必须是唯一的,所以在这里也必须进行设置
进入到 /data目录
在这里用vi命令修改myid文件内的值为1即可
保存退出,查看myid文件的内容
同理,进入zk02和zk03容器内部修改zoo.cfg和myid文件的内容。
到这里我们就已经配置好了三台zk服务器,接下来只要将其启动起来即可。
三、启动
打开三个窗口,分别进入三个zk容器内部,然后切换到bin目录下
运行 zkServer.sh 脚本,开启zookeeper服务
可以看到zk集群已经启动起来了,完美!
四、注意事项
如果在运行 zkServer.sh 文件的过程中有什么错误的话,可以查看zookeeper.out文件,里面会有错误提示内容
修改完zoo.cfg配置文件后,需要用 docker restart [容器名] 重启zookeeper容器
转载链接:http://116.62.53.133:8090/archives/%E8%AE%B0%E5%BD%95%E4%BD%BF%E7%94%A8docker%E6%90%AD%E5%BB%BAzookeeper%E9%9B%86%E7%BE%A4%E6%97%B6%E7%9A%84%E8%BF%87%E7%A8%8B