前言
之前有介绍docker-compose 的网络模块.
基础依赖
基本思路
想法1
首先. 我们, 需要去docker的官网去查看是否有官方的镜像. 非常luck, 我们的zookeeper已经有官方的镜像可以进行使用.
在进行zookeeper镜像使用之前, 我们最好能够确认你需要的版本. 本文使用的是当前环境相较比较稳定的3.6.3 . (注意mac好像最近为了适配M1芯片, 请选择相关适配的docker镜像.)
单机 - (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 集群的搭建
|