docker -compose 安装zookeeper,建立zookeeper集群

本文详细介绍了如何在三台虚拟机上使用Docker安装并配置Zookeeper集群,包括启动Docker服务、下载镜像、创建挂载目录、设置server.id、编写zoo.cfg配置文件、启动容器、配置开机启动以及防火墙设置等步骤,确保Zookeeper集群的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、准备

3台虚拟机安装linux,centos7.

网络连接使用NAT模式

up-3e0d5ebad2c1c13c4ed9f25d6e114177544.png

二、docker安装zookeeper

1.启动docker 服务

service docker start

2.查找镜像

docker search zookeeper

3.下载镜像

docker pull zookeeper

4. 主机上建立挂载目录

mkdir -p /opt/zookeeper/data
mkdir -p /opt/zookeeper/conf

5. 分别设置每台机器的server id

cd /opt/zookeeper/data
touch myid
echo 0 > myid

id分别要对应配置文件中的id,即server.0,server.1,server.2

6.编写 zookeeper 配置文件zoo.cfg,配置文件放在/opt/zookeeper/conf 目录下

cd /opt/zookeeper/conf
vim zoo.cfg
clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.0=192.168.137.129:2888:3888
server.1=192.168.137.130:2888:3888
server.2=192.168.137.131:2888:3888

注意:若安装单机版zookeeper,则配置文件如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60

7.在三台机器上分别启动容器 (使用docker-compose编排zookeeper步骤为8-14步)

docker run  --network host  -v /opt/zookeeper/data:/data -v /opt/zookeeper/conf:/conf --name zookeeper_rh  -d docker.io/zookeeper

注意:

命令说明:

--network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败
-v /opt/zookeeper/data:/data:主机的数据目录挂载到容器/data下
-v /opt/zookeeper/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

8.编排zookeeper.yml

cd /opt/zookeeper/dockerfile
vim zookeeper.yml 
zookeeper_rh:
        image: zookeeper
        container_name: zookeeper_rh
        restart: always
        volumes:
                - /opt/zookeeper/data:/data  
                - /opt/zookeeper/conf:/conf      
        ports:
                - "2181:2181"

9.构建zookeeper容器

docker-compose -f  /opt/zookeeper/dockerfile/zookeeper.yml up

10.启动容器

docker-compose -f  /opt/zookeeper/dockerfile/zookeeper.yml  start

11.编辑开机启动脚本

cd /opt/zookeeper/dockerfile
vim boot_zookeeper
#!/bin/bash
#chkconfig:2345 30 80
case $1 in
start)
docker-compose -f /opt/zookeeper/zookeeper.yml start
;;
stop)
docker-compose -f /opt/zookeeper/zookeeper.yml stop
;;
restart)
docker-compose -f /opt/zookeeper/zookeeper.yml restart
;;
*)
echo "require start|stop|restart" ;;
esac

12.上传 boot_zookeeper到/etc/init.d/

cp boot_zookeeper /etc/init.d

13. 添加执行权限

chmod +x /etc/init.d/boot_zookeeper

14.加入开机启动

chkconfig --add boot_zookeeper


15.开启2181端口

vim /etc/sysconfig/iptables
# 加入如下代码
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

16.保存退出后重启防火墙

service iptables restart

17.查看容器状态

选择一台服务器,进入容器,在zookeeper的bin目录下执行 ./zkServer.sh status,可看到该节点是leader还是follower

docker ps
docker exec -it 546 bash
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS     NAMES
546a2cf471ad   zookeeper   "/docker-entrypoint.…"   27 minutes ago   Up 27 minutes             zookeeper_1
[root@localhost ~]# docker exec -it 546 bash
root@localhost:/apache-zookeeper-3.7.0-bin# docker exec -it 546 bashdocker exec -it 546 bash
bash: docker: command not found
root@localhost:/apache-zookeeper-3.7.0-bin# ls
LICENSE.txt  NOTICE.txt  README.md  README_packaging.md  bin  conf  docs  lib
root@localhost:/apache-zookeeper-3.7.0-bin# cd bin
root@localhost:/apache-zookeeper-3.7.0-bin/bin# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer-initialize.sh  zkServer.sh            zkSnapShotToolkit.sh    zkSnapshotComparer.sh  zkTxnLogToolkit.sh
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer.cmd            zkSnapShotToolkit.cmd  zkSnapshotComparer.cmd  zkTxnLogToolkit.cmd
root@localhost:/apache-zookeeper-3.7.0-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@localhost:/apache-zookeeper-3.7.0-bin/bin# 

up-f5302ba4fb13e2f635bbd196a61a9e4d5e1.png

### 使用 Docker-Compose 部署 Zookeeper 集群 #### 1. 环境准备 在开始之前,确保每台虚拟机已经安装了 **Docker** 和 **Docker Compose**。如果尚未安装,可以按照以下步骤完成安装- 使用 `yum` 或其他包管理工具安装 Python3 的 Pip 工具: ```bash yum -y install python3-pip ``` - 升级 Pip 至最新版本以提高兼容性和性能: ```bash pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple ``` - 安装 Docker Compose 工具以便能够轻松管理和编排容器化服务: ```bash pip3 install docker-compose -i https://pypi.tuna.tsinghua.edu.cn/simple ``` - 验证 Docker Compose 是否成功安装并获取其当前版本号: ```bash docker-compose version ``` 以上步骤完成后即可进入实际配置阶段[^4]。 #### 2. 创建 Docker Compose 文件 在一个目录下创建名为 `docker-compose.yml` 的文件,并编辑如下内容作为基础模板: ```yaml version: '3' services: zookeeper1: image: zookeeper:latest container_name: zookeeper1 ports: - "2181:2181" - "2888:2888" - "3888:3888" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181 networks: - zookeeper-net zookeeper2: image: zookeeper:latest container_name: zookeeper2 ports: - "2182:2181" - "2889:2888" - "3889:3888" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181 networks: - zookeeper-net zookeeper3: image: zookeeper:latest container_name: zookeeper3 ports: - "2183:2181" - "2890:2888" - "3890:3888" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zookeeper1:2888:3888;2181 server.2=zookeeper2:2888:3888;2181 server.3=zookeeper3:2888:3888;2181 networks: - zookeeper-net networks: zookeeper-net: driver: bridge ``` 此 YAML 文件定义了一个由三个节点组成的 Zookeeper 集群环境[^2]。 #### 3. 启动集群 保存上述配置后,在同一路径执行启动命令: ```bash docker-compose up -d ``` 这将以分离模式运行所有指定的服务实例[^5]。 #### 4. 验证状态 可以通过以下方式检查各个节点的工作情况以及角色分配(leader/follower): ```bash docker exec -it zookeeper1 zkServer.sh status docker exec -it zookeeper2 zkServer.sh status docker exec -it zookeeper3 zkServer.sh status ``` 正常情况下会返回类似于这样的信息表明该服务器处于跟随者或者领导者模式之中: ``` ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower/leader ``` 另外还可以尝试连接到任意一台机器上的客户端界面进一步测试功能连通性与数据一致性等问题存在与否。 例如先切换至某个具体容器内部再调用对应脚本实现交互操作目的: ```bash docker exec -it zookeeper1 bash cd /opt/zookeeper/bin/ ./zkCli.sh -server localhost:2181 ``` 至此整个流程结束即完成了利用 Docker Compose 构建起一套完整的分布式协调框架解决方案——ZooKeeper Cluster!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITSDSDFSDF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值