问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Mac(M1)搭建Zookeeper集群

创作时间:
作者:
@小白创作中心

Mac(M1)搭建Zookeeper集群

引用
CSDN
1.
https://blog.csdn.net/woodpecker8/article/details/129026630

本文将详细介绍如何在MacBook M1上使用Docker搭建Zookeeper集群。内容包括Zookeeper版本选择、镜像拉取、单机部署和集群部署的具体步骤。

ZK版本选择

Zookeeper官网地址:https://zookeeper.apache.org/

目前最新的稳定版本是3.7.1,故本文使用3.7.1版本。

镜像拉取

docker pull zookeeper:3.7.1

单机部署

创建挂载目录

# 进入终端用户的根路径
cd ~
# 创建目录
mkdir myZK
cd myZK
mkdir data conf logs
# 查看绝对路径,docker挂载目录建议使用绝对路径
pwd

编辑配置文件

cd ~
cd myZK/conf
vim zoo.cfg

配置内容如下:

dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181

启动容器

docker run -d \
--name zk-simple \
--privileged=true \
-p 2181:2181 \
-v $HOME/myZK/data:/data \
-v $HOME/myZK/conf:/conf \
-v $HOME/myZK/logs:/datalog \
zookeeper:3.7.1

结果验证

# 进入容器内
docker exec -it zk-simple /bin/bash
# 查看状态
./bin/zkServer.sh status
# 执行客户端脚本,进入控制台
docker exec -it zk-simple zkCli.sh

集群部署

创建挂载目录

# 进入终端用户的根路径
cd ~
# 创建目录
mkdir myZK
cd myZK
mkdir -p zk1/conf zk1/data zk1/logs
mkdir -p zk2/conf zk2/data zk2/logs
mkdir -p zk3/conf zk3/data zk3/logs
# 查看绝对路径,docker挂载目录建议使用绝对路径
pwd

自定义子网IP

# 创建子网 zknet
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zknet
# 查看网络列表
docker network ls
# 查看网络详情
docker network inspect <NETWORK ID>

编辑配置文件

zoo.cfg
cd ~
cd myZK/conf
vim zk1/conf/zoo.cfg
vim zk2/conf/zoo.cfg
vim zk3/conf/zoo.cfg

配置内容如下:

# zk-cluster-1
dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=172.18.0.2:2888:3888
server.2=172.18.0.3:2888:3888
server.3=172.18.0.4:2888:3888

# zk-cluster-2
dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=172.18.0.2:2888:3888
server.2=172.18.0.3:2888:3888
server.3=172.18.0.4:2888:3888

# zk-cluster-3
dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=172.18.0.2:2888:3888
server.2=172.18.0.3:2888:3888
server.3=172.18.0.4:2888:3888
myid
cd ~
cd myZK/conf
# myid文件中配置的内容分别为1,2,3
vim zk1/conf/myid
vim zk2/conf/myid
vim zk3/conf/myid

启动容器

查看端口是否被占用

lsof -i:2181
# 启动容器1
docker run -d \
--name zk-cluster-1 \
--privileged=true \
-p 2181:2181 \
--network zknet --ip 172.18.0.2 \
-v $HOME/myZK/zk1/data:/data \
-v $HOME/myZK/zk1/conf:/conf \
-v $HOME/myZK/zk1/logs:/datalog \
zookeeper:3.7.1

# 启动容器2
docker run -d \
--name zk-cluster-2 \
--privileged=true \
-p 2182:2181 \
--network zknet --ip 172.18.0.3 \
-v $HOME/myZK/zk2/data:/data \
-v $HOME/myZK/zk2/conf:/conf \
-v $HOME/myZK/zk2/logs:/datalog \
zookeeper:3.7.1

# 启动容器3
docker run -d \
--name zk-cluster-3 \
--privileged=true \
-p 2183:2181 \
--network zknet --ip 172.18.0.4 \
-v $HOME/myZK/zk3/data:/data \
-v $HOME/myZK/zk3/conf:/conf \
-v $HOME/myZK/zk3/logs:/datalog \
zookeeper:3.7.1

验证

# 进入容器内
docker exec -it zk-cluster-1 /bin/bash
# 查看状态
./bin/zkServer.sh status

参考资料

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号