实现“kafka docker compose 单机启动集群”教程
整体流程
首先,我们需要创建一个包含多个 Kafka 节点的 Docker Compose 集群。然后,我们将启动这个集群,并验证 Kafka 集群是否成功运行。
下面是整个过程的步骤:
erDiagram
Kafka_Node1 ||--|| Zookeeper_Node1: Kafka_Node1 包含 Zookeeper_Node1
Kafka_Node2 ||--|| Zookeeper_Node2: Kafka_Node2 包含 Zookeeper_Node2
Kafka_Node3 ||--|| Zookeeper_Node3: Kafka_Node3 包含 Zookeeper_Node3
步骤及代码
- 创建 Docker Compose 配置文件
docker-compose.yml
,包含三个 Kafka 节点和三个对应的 Zookeeper 实例:
version: '2'
services:
zookeeper1:
image: wurstmeister/zookeeper:latest
container_name: zookeeper1
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper1:2888:3888
zookeeper2:
image: wurstmeister/zookeeper:latest
container_name: zookeeper2
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888
zookeeper3:
image: wurstmeister/zookeeper:latest
container_name: zookeeper3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888
kafka1:
image: wurstmeister/kafka:latest
container_name: kafka1
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka1:9093,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
kafka2:
image: wurstmeister/kafka:latest
container_name: kafka2
ports:
- "9094:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka2:9095,OUTSIDE://localhost:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://0.0.0.0:9095,OUTSIDE://0.0.0.0:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
KAFKA_BROKER_ID: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
kafka3:
image: wurstmeister/kafka:latest
container_name: kafka3
ports:
- "9096:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka3:9097,OUTSIDE://localhost:9096
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://0.0.0.0:9097,OUTSIDE://0.0.0.0:9096
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
KAFKA_BROKER_ID: 3
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
- 在终端中执行以下命令启动 Kafka 集群:
docker-compose up
- 验证 Kafka 集群是否成功启动,可以使用