【Zookeeper系列】基于docker-compose快速搭
2022-02-12 本文已影响0人
爱打乒乓的程序员
事先声明,本篇文章的 ZK 集群部署方式不适合在生产环境使用,实际上只是一个伪集群,单机部署,依旧有单点故障的可能。但读者可基于以下内容,快速搭建 ZK 集群,同时借鉴部署的方式,以便日后相关学习~
在学习使用Zookeeper命令之前,咱们先部署ZK集群,通过docker-compose能够很方便构建部署镜像,所以选择docker-compose的方式部署。当然您也可以下载zookeeper的包,执行命令启动zk,然后再修改配置文件,设置集群信息,不过这种方式比较麻烦,所以在这里就不再赘述啦。【docker-compose的使用,可以另外找文档了解,基于docker容器很容易入门的】
关于zookeeper的docker搭建,也可以参考官方 Docker Hub
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
container_name: zoo1
# 每台zk对外的端口
ports:
- 2181:2181
environment:
# zk服务器唯一Id,不能和其它服务器myid一样
ZOO_MY_ID: 1
# zk集群的服务器
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181
zoo2:
image: zookeeper
restart: always
hostname: zoo2
container_name: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181
zoo3:
image: zookeeper
restart: always
hostname: zoo3
container_name: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181
zoo4:
image: zookeeper
restart: always
hostname: zoo4
container_name: zoo4
ports:
- 2184:2181
environment:
ZOO_MY_ID: 4
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181
zoo5:
image: zookeeper
restart: always
hostname: zoo5
container_name: zoo5
ports:
- 2185:2181
environment:
ZOO_MY_ID: 5
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 server.4=zoo4:2888:3888;2181 server.5=zoo5:2888:3888;2181
执行 docker-compose up -d,当五台服务器启动成功后,会根据配置中的ZOO_MY_ID,选择最大值作为leader。
ps.并不一定是根据 ZOO_MY_ID 最大值选择为 Leader,实际上 ZK 集群内部会有 Leader 选举的过程
部署校验
查看zk的容器Id
进入容器:docker exec -it 容器Id /bin/bash
查看zk状态:bin/zkServer.sh status
根据截图的Mode可知,当前ZK是Leader角色
进入zk服务:bin/zkCli.sh -server
接下来就可以开始玩zk的命令啦~
如果觉得文章不错的话,麻烦点个赞哈,你的鼓励就是我的动力!对于文章有哪里不清楚或者有误的地方,欢迎在评论区留言~