下载Docker
# 下载对应Docker镜像
docker pull bitnami/zookeeper:3.8.0
docker pull bitnami/kafka:3.1.0
创建网络
docker network create kafka_net --driver bridge
创建zookeeper集群
docker-compose-zookeeper.yml
version: '3'
services:
zoo1:
image: bitnami/zookeeper:3.8.0
hostname: zoo1
container_name: zoo1
ports:
- '2181:2181'
environment:
ZOO_SERVER_ID: 1
ZOO_SERVERS: 0.0.0.0:2888:3888,zoo2:2888:3888,zoo3:2888:3888
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- kafka_net
zoo2:
image: bitnami/zookeeper:3.8.0
hostname: zoo2
container_name: zoo2
ports:
- '2182:2181'
environment:
ZOO_SERVER_ID: 2
ZOO_SERVERS: zoo1:2888:3888,0.0.0.0:2888:3888,zoo3:2888:3888
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- kafka_net
zoo3:
image: bitnami/zookeeper:3.8.0
hostname: zoo3
container_name: zoo3
ports:
- '2183:2181'
environment:
ZOO_SERVER_ID: 3
ZOO_SERVERS: zoo1:2888:3888,zoo2:2888:3888,0.0.0.0:2888:3888
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- kafka_net
networks:
kafka_net:
external: true
# 容器启动
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml up -d
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml stop
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml rm
# 查看zookeper 集群状态
docker exec -it zoo1 zkServer.sh status
docker exec -it zoo2 zkServer.sh status
docker exec -it zoo3 zkServer.sh status
创建kafak集群
docker-compose-kafak.yml
version: '3'
services:
kafka1:
image: bitnami/kafka:3.1.0
hostname: kafka1
container_name: kafka1
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
# KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9092
KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
ALLOW_PLAINTEXT_LISTENER: "yes"
networks:
- kafka_net
kafka2:
image: bitnami/kafka:3.1.0
hostname: kafka2
container_name: kafka2
ports:
- '9093:9092'
environment:
KAFKA_BROKER_ID: 2
KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
# KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9093
KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
ALLOW_PLAINTEXT_LISTENER: "yes"
networks:
- kafka_net
kafka3:
image: bitnami/kafka:3.1.0
hostname: kafka3
container_name: kafka3
ports:
- "9094:9092"
environment:
KAFKA_BROKER_ID: 3
KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
# KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9094
KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
ALLOW_PLAINTEXT_LISTENER: "yes"
networks:
- kafka_net
networks:
kafka_net:
external: true
# 容器启动
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml up -d
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml stop
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml rm
# 查看kafka 集群状态
/opt/bitnami/kafka/bin
docker exec -it kafka1 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --topic first --create --partitions 1 --replication-factor 3
docker exec -it kafka1 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list
docker exec -it kafka2 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list
docker exec -it kafka3 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list