前言
最近在学习Kafka,低版本需要将Zookeeper(ZK)作为协调者,特地补充下Zookeeper的知识,顺便基于docker compose搭建一个ZK集群。
一、环境准本
1、CentOS环境——CentOS7
查看Linux环境:cat /etc/os-release
2、docker环境——23.0.3
查看docker版本:docker -v
3、docker-compose环境——1.29.2
查看docker-compose版本:docker-compose -v
4、docker 镜像——latest
查看zookeeper版本:docker images
二、集群搭建
1、docker-compose.yml 文件
version: '1.0'
# 给zk集群配置一个网络,网络名为zk-net
networks:
zk-net:
name: zk-net
# 配置zk节点
# services下的每一个子配置都对应一个zk节点的docker容器
services:
zk1:
# docker container所使用的docker image
image: zookeeper
hostname: zk1
container_name: zk1
# 配置docker container和宿主机的端口映射
ports:
- 2181:2181
- 8081:8080
# 配置docker container的环境变量
environment:
# 当前zk实例的id
ZOO_MY_ID: 1
# 整个zk集群的机器、端口列表
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
# 将docker container上的路径挂载到宿主机上 实现宿主机和docker container的数据共享
volumes:
- ./zookeeper/cluster/zk1/data:/data
- ./zookeeper/cluster/zk1/datalog:/datalog
# 当前docker container加入名为zk-net的隔离网络
networks:
- zk-net
zk2:
image: zookeeper
hostname: zk2
container_name: zk2
ports:
- 2182:2181
- 8082:8080
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
volumes:
- ./zookeeper/cluster/zk2/data:/data
- ./zookeeper/cluster/zk2/datalog:/datalog
networks:
- zk-net
zk3:
image: zookeeper
hostname: zk3
container_name: zk3
ports:
- 2183:2181
- 8083:8080
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
volumes:
- ./zookeeper/cluster/zk3/data:/data
- ./zookeeper/cluster/zk3/datalog:/datalog
networks:
- zk-net
2、执行docker-compose
执行docker-compose:docker-compose up -d
3、查看运行容器是否正在运行
查看运行容器是否正在运行:docker ps
Up:已运行时间
代表执行成功
三、查看集群状态
由于在配置文件中, 我将容器内部8080端口分别映射到了宿主机上的8081、8082、8083端口,所以我们可以在宿主机(Windows环境)上通过浏览器访问这三个ZK节点实例内嵌的可视化界面:
http://192.168.1.4:8081/commands
http://192.168.1.4:8082/commands
http://192.168.1.4:8083/commands
1、configuration
在configuration目录下我们可以看到zk实例的基本配置信息,比如server_id、提供客户端服务的端口、数据目录、日志目录等。
2、stats
在stats目录下可以看到zk实例的运行状态信息,比如节点身份、数据大小、日志大小等,
通过查看三个zk节点实例的stats信息,可以看到zk3是整个集群的leader角色,zk1、zk2都是zk3的follower角色
总结
以上就是Zookeeper的集群搭建使用,具体的Zookeeper学习笔记总结完毕会发出来,绝对比细狗还要细!!