实现“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

步骤及代码

  1. 创建 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
  1. 在终端中执行以下命令启动 Kafka 集群:
docker-compose up
  1. 验证 Kafka 集群是否成功启动,可以使用