灌篮少年 发表于 2024-3-3 04:09:09

Linux Zookeeper在Docker 安装与简单通信

一、在本地计算机上安装Docker
1.安装Docker (安装最新的Docker版本)
yum install docker-ce docker-ce-cli containerd.io docker-bulidx-plugin docker-compose-plugin
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811785-2020294114.png
2.查看Docker版本并启动Docker
docker version
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811725-227474712.png
安装成功的Docker版本为24.0.6
systemctl start docker
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811536-1367331333.png
Docker 成功启动
二、在Docker中构建映像(image),安装Zookeeper
1.拉取zookeeper镜像 (选择安装版本为3.8.2)
docker pull zookeeper:3.8.2
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811741-881604905.png
2.查看Docker镜像
docker images
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811554-902931020.png
已成功拉取zookeeper:3.8.2 镜像
三、构建局域网环境
采用bridge 方式
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811484-1002024089.png
四、使用 docker-compose 创建zookeeper集群
1.查看docker - compose (在安装docker时已安装docker-compose-plugin)
docker-compose --version
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811577-1685998422.png
2.编写zoo.yml文件
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811636-932825098.png
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811670-654059338.png
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811671-1638617754.png
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811071-303055828.png
3.在zoo.yml同一级目录下执行docker-compose命令
docker-compose -f zoo.yml up -d
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811404-1334148404.png
4.查看运行的容器
docker ps
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811667-420314139.png
可以看到zoo1 zoo2 zoo3 三个容器实例正在运行
其容器id 分别为6635ecc75b61 b8a740a705e2 a447136876a9
5.验证zoo1 zoo2 zoo3是否构成一个集群。进入zookeeper容器查看主从节点
1)进入 zoo1
docker exec -it b8a740a705e2 /bin/bash
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811577-1730411000.png
zoo1 为follower
2)进入zoo2
docker exec -it 6635ecc75b61 /bin/bash
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811597-1737576023.png
zoo2为follower
3)进入zoo3
docker exec -it a447136876a9 /bin/bash
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811615-144830041.png
zoo3为leader
可以知道zoo1 zoo2 zoo3 通过选举产生得到leader zoo3
follower zoo1 follower zoo2
五、在leader上进行配置修改,观测follower上相应配置的同步情况
1.进入zoo3 启动zkCli.sh 并进行修改
docker exec -it a447136876a9 /bin/bash
./bin/zkCli.sh
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811758-901272223.png
ls /
查看
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811467-1846753986.png
create /hi
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811596-954776651.png
2.进入follower zoo2 并启动 zkCli 后查看
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811751-1630495150.png
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811517-1067120797.png
出现leader 写入的hi
3.进入follower zoo1 并启动 zkCli 后查看
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811760-663533756.png
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205810999-2066440141.png
同样出现leader 写入的hi
六、安装过程中出现的问题
1.构建局域网时报错
在使用命令docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet 出现报错
在查看docker network ls 和docker network inspect后发现因为我之前使用Docker创建了一个network ,它默认是bridge 与我创建的network有冲突。在删除它后问题得到了解决。
https://img2023.cnblogs.com/blog/3318273/202312/3318273-20231216205811686-386525530.png
2.zookeeper版本问题
使用命令docker run 运行容器时需要指定镜像版本,否则默认会使用最新的版本创建并运行。后面停止并删除之前的zookeeper,指定zookeeper版本后解决问题。
3.zookeeper集群无法通讯的问题
在配置文件zoo.yml 后,使用docker-compose启动,发现各个节点无法通信。因为在yml文件中未指定ipv4的ip地址 ,重新编写yml文件加入networks配置解决问题。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Linux Zookeeper在Docker 安装与简单通信