Docker-Compose环境安装
参考我的历史文章:传送门
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 问题解决。
都看到这里啦,点个赞再走吧~