使用 Docker-compose 搭建 Zookeeper 集群

Docker-Compose环境安装

参考我的历史文章:Docker 及 Docker-compose 环境配置-CSDN博客

docker-compose-zookeeper.yaml 文件

ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 集群需要设置的两个环境变量, 其中 ZOO_MY_ID 表示 ZK 服务的 id, 它是1-255 之间的整数, 必须在集群中唯一。ZOO_SERVERS 是ZK 集群的主机列表。

 

复制代码

version: '3' services: zoo1: image: zookeeper:3.4.11 restart: always hostname: zoo1 ports: - 2181:2181 networks: - zookeeper environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo2: image: zookeeper:3.4.11 restart: always hostname: zoo2 ports: - 2182:2181 networks: - zookeeper environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo3: image: zookeeper:3.4.11 restart: always hostname: zoo3 ports: - 2183:2181 networks: - zookeeper environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 networks: zookeeper: driver: bridge

启动 Zookeeper 集群

 

复制代码

# 启动所有Zookeeper服务 docker-compose -f docker-compose-zookeeper.yaml up -d # 移除所有Zookeeper服务 docker-compose -f docker-compose-zookeeper.yaml rm -sf

查看集群状态

可以看到 zoo1 和 zoo2 为当前集群的 follower,zoo3 为当前集群的 leader

 

复制代码

[root@hostname ~]# echo stat | nc 127.0.0.1 2181 Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT Clients: /172.19.0.1:38584[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 2 Sent: 1 Connections: 1 Outstanding: 0 Zxid: 0x0 Mode: follower Node count: 4 [root@hostname ~]# echo stat | nc 127.0.0.1 2182 Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT Clients: /172.19.0.1:48802[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 1 Sent: 0 Connections: 1 Outstanding: 0 Zxid: 0x0 Mode: follower Node count: 4 [root@hostname ~]# echo stat | nc 127.0.0.1 2183 Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT Clients: /172.19.0.1:53120[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 1 Sent: 0 Connections: 1 Outstanding: 0 Zxid: 0x100000000 Mode: leader Node count: 4

连接Zookeeper集群

 

复制代码

docker run -it --rm \ --link zoo1:zk1 \ --link zoo2:zk2 \ --link zoo3:zk3 \ --net root_zookeeper \ zookeeper zkCli.sh -server zk1:2181,zk2:2181,zk3:2181

踩坑记录

最新的 zookeeper:3.6.1 版本使用 environment 设置 ZOO_MY_ID 环境变量后,无法正确读取配置,zookeeper 服务启动后报错:

 

复制代码

root@zoo1:/apache-zookeeper-3.6.1-bin/bin# zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Client port not found in static config file. Looking in dynamic config file. grep: : No such file or directory Client port not found. Terminating.

改为 zookeeper:3.4.11 问题解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Docker Compose搭建Zookeeper集群,可以按照以下步骤进行操作: 1. 创建一个Docker Compose文件,例如`docker-compose.yml`,内容如下: ``` version: '3' services: zookeeper1: image: zookeeper:3.6.3 container_name: zookeeper1 restart: always environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 ports: - "2181:2181" - "2888:2888" - "3888:3888" volumes: - ./data/zookeeper1:/data - ./logs/zookeeper1:/datalog zookeeper2: image: zookeeper:3.6.3 container_name: zookeeper2 restart: always environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 ports: - "2182:2181" - "2889:2888" - "3889:3888" volumes: - ./data/zookeeper2:/data - ./logs/zookeeper2:/datalog zookeeper3: image: zookeeper:3.6.3 container_name: zookeeper3 restart: always environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888 ports: - "2183:2181" - "2890:2888" - "3890:3888" volumes: - ./data/zookeeper3:/data - ./logs/zookeeper3:/datalog ``` 这里定义了三个Zookeeper节点,分别是`zookeeper1`、`zookeeper2`和`zookeeper3`,使用的镜像是官方的`zookeeper:3.6.3`,并分别映射了Zookeeper的端口和数据卷。 2. 创建数据卷目录,例如`./data/zookeeper1`、`./data/zookeeper2`和`./data/zookeeper3`,用于存储Zookeeper的数据。 3. 创建日志目录,例如`./logs/zookeeper1`、`./logs/zookeeper2`和`./logs/zookeeper3`,用于存储Zookeeper的日志。 4. 执行`docker-compose up -d`命令启动Zookeeper集群。 5. 可以通过`docker-compose ps`命令查看Zookeeper节点的状态。 至此,Zookeeper集群搭建完成了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值