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 问题解决。