docker-compose搭建zookeeper集群
1.拉取镜像
docker pull zookeeper:3.4.11
2.zookeeper集群搭建
mkidr zk-cluster
cd zk-cluster
vim docker-compose.yml
写入如下内容
version: '2'
services:
zoo1:
image: zookeeper:3.4.11
restart: always
container_name: zoo1
ports:
- "2181:2181"
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
container_name: zoo2
ports:
- "2182:2181"
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
container_name: zoo3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
这个配置文件会告诉 Docker 分别运行三个 zookeeper 镜像, 并分别将本地的 2181, 2182, 2183 端口绑定到对应的容器的2181端口上(每个zookeeper容器的默认端口都是2181,这句话意思也就是说,将宿主机的2181、2182、2183这3个端口号,分别映射到3个zookeeper容器的2181端口)。
ZOO_MY_ID 和 ZOO_SERVERS 是搭建 ZK 集群需要设置的两个环境变量,其中 ZOO_MY_ID 表示 ZK 服务的 id,它是1-255 之间的整数,必须在集群中唯一;ZOO_SERVERS 是ZK 集群的主机列表。
3.运行
接着我们在 docker-compose.yml 所在的目录下运行:
COMPOSE_PROJECT_NAME=zk_cluster docker-compose up
即可启动 ZK 集群了。
注意:这种方式非后台运行,当执行 Ctrl + C 组合键的时候,所有的ZK容器都会停止运行。
以后台方式运行docker-compose
COMPOSE_PROJECT_NAME=zk_cluster docker-compose up -d
4.查看启动的ZK集群
执行上述命令成功后,接着新开启一个终端,然后在新终端界面中,首先进入zk-cluster目录,在该目录下运行以下命令可以查看启动的 ZK 容器:
COMPOSE_PROJECT_NAME=zk_cluster docker-compose ps
5.测试连接ZK集群
通过上面的图,可以看到3个ZK容器的ID信息。
这里我们先进入zoo1这个容器,查看ZK的信息,执行以下命令:
docker exec -it zoo1 zkServer.sh status
docker exec -it zoo2 zkServer.sh status
docker exec -it zoo3 zkServer.sh status