1.先拉取 Zookeeper、Kafka镜像
-- 默认拉取的镜像都是最新的
docker pull zookeeper:3.6.3
docker pull bitnami/kafka:3.5.1
-- 打开docker桌面,可以看见我们的zookeeper和kafka已经拉取下来了
2. 创建文件夹(这几个文件夹对应后面的配置文件如不一致需做更改)
// kafka 文件夹
D:\docker\kafka\kafka1\data
D:\docker\kafka\kafka2\data
D:\docker\kafka\kafka3\data
// zookeeper 文件夹
D:\docker\zookeeper\zoo1\data
D:\docker\zookeeper\zoo1\datalog
D:\docker\zookeeper\zoo2\data
D:\docker\zookeeper\zoo2\datalog
D:\docker\zookeeper\zoo3\data
D:\docker\zookeeper\zoo3\datalog
// docker-compose 文件夹
D:\docker\docker-compose\kafka
D:\docker\docker-compose\zookeeper
3.创建docker网络
docker network create zk-net
4.配置集群文件(也可以自己在文件下建)
// zookeeper 配置文件
D:\docker\docker-compose\zookeeper\cluster.yml
// kafka 配置文件
D:\docker\docker-compose\kafka\cluster.yml
-- 文件内容(路径改成自己的路径):
-- D:\docker\docker-compose\zookeeper\cluster.yml
version: '2'
networks:
zk-net:
external:
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
volumes:
- /D/docker/zookeeper/zoo1/data:/data
- /D/docker/zookeeper/zoo1/datalog:/datalog
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=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2182:2181
- 8082:8080
volumes:
- /D/docker/zookeeper/zoo2/data:/data
- /D/docker/zookeeper/zoo2/datalog:/datalog
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=zoo3:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2183:2181
- 8083:8080
volumes:
- /D/docker/zookeeper/zoo3/data:/data
- /D/docker/zookeeper/zoo3/datalog:/datalog
-- D:\docker\docker-compose\kafka\cluster.yml
version: '3'
networks:
zk-net:
external:
name: zk-net
services:
kafka01:
image: 'bitnami/kafka:3.5.1'
restart: always
container_name: kafka01
hostname: kafka01
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka01:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /D/docker/kafka/kafka1:/bitnami/kafka
networks:
- zk-net
kafka02:
image: 'bitnami/kafka:3.5.1'
restart: always
container_name: kafka02
hostname: kafka02
ports:
- '9093:9092'
environment:
- KAFKA_BROKER_ID=2
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka02:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /D/docker/kafka/kafka2:/bitnami/kafka
networks:
- zk-net
kafka03:
image: 'bitnami/kafka:3.5.1'
restart: always
container_name: kafka03
hostname: kafka03
ports:
- '9094:9092'
environment:
- KAFKA_BROKER_ID=3
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka03:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /D/docker/kafka/kafka3:/wurstmeister/kafka
networks:
- zk-net
5.按顺序启动两个配置文件
-- 启动 zookeeper
docker-compose -f D:\docker\docker-compose\zookeeper\cluster.yml up -d
-- 启动 kafka
docker-compose -f D:\docker\docker-compose\kafka\cluster.yml up -d
kafka启动的时候,没有成功,后面参考了这篇文章:https://www.cnblogs.com/mihutao/p/16664588.html
如果kafka连接不上zookeeper,使用下面的命令加入zk-net 网络:
docker network connect zk-net kafka01
docker network connect zk-net kafka02
docker network connect zk-net kafka03
-- 查看已启动的容器