前言
之前有介绍docker-compose
的网络模块.
基础依赖
- docker & docker-compose
基本思路
想法1
首先. 我们, 需要去docker的官网去查看是否有官方的镜像. 非常luck, 我们的zookeeper已经有官方的镜像可以进行使用.
在进行zookeeper镜像使用之前, 我们最好能够确认你需要的版本. 本文使用的是当前环境相较比较稳定的3.6.3
. (注意mac好像最近为了适配M1芯片, 请选择相关适配的docker镜像.)
-
提前下载docker镜像
docker pull zookeeper:3.6.3
-
提前创建docker网络
docker-network create zk-net
单机 - (docker-compose.yml文件)
version: '2'
networks:
zk-net:
name: zk-net
services:
zoo1:
image: 'zookeeper:3.6.3'
container_name: zoo1
hostname: zoo1
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2181:2181
- 8081:8080
集群的配置文件和单机相似. 我们就先解析单机的配置文件.
networks
networks/zk-net/name
: 此处主要是声明docker的相关网络. 便于下方进行使用.
services
services/environnet
: 主要声明后方需要使用的某几个变量.environment/ZOO_MY_ID
: 通常构建集群时候的声明节点id.environment/ ZOO_SERVERS: server.1
: 声明配置文件的地址.environment/networks
: 当前节点使用的网络.environment/ports
: 当前节点相关的节点映射.
集群 - (docker-compose.yml文件)
version: '2'
networks:
zk-net:
name: zk-net
services:
zoo1:
image: 'zookeeper:3.6.3'
container_name: zoo1
hostname: zoo1
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2181:2181
- 8081:8080
zoo2:
image: 'zookeeper:3.6.3'
container_name: zoo2
hostname: zoo2
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2182:2181
- 8082:8080
zoo3:
image: 'zookeeper:3.6.3'
container_name: zoo3
hostname: zoo3
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2183:2181
- 8083:8080
其实相关的配置文件, Zookeeper
的官网已经给出了一份解决方案. 其与上文的配置文件比较相似.
相关实践操作
- 启动
docker-compose start
- 使用
zk-Cli.sh
链接相关zookeeper集群.
Reference
[1]. docker compose搭建zookeeper集群
[2]. https://hub.docker.com/_/zookeeper
[3]. 使用 Docker 一步搞定 ZooKeeper 集群的搭建