Skip to content

WuLex/KafkaManagement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kafka simple management system

常用命令

kafka相关命令

如图:

生产消息: img

展示消息列表: img

创建Kafka集群,如图

img

创建一个 docker-compose.yml 文件

用于定义 Kafka 集群的服务和配置

version: '3.7'

services:
  zookeeper-1:
    image: wurstmeister/zookeeper:3.4.6
    container_name: zookeeper-1
    hostname: zookeeper-1
    ports:
      - "2181:2181"  # 将 Zookeeper 服务端口映射到主机端口

    environment:
      ZOO_MY_ID: 1  # 设置当前 Zookeeper 实例的 ID
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888  # 配置 Zookeeper 集群中所有节点的信息

    networks:
      - kafka-network

  zookeeper-2:
    image: wurstmeister/zookeeper:3.4.6
    container_name: zookeeper-2
    hostname: zookeeper-2
    ports:
      - "2182:2181"  # 将 Zookeeper 服务端口映射到主机端口

    environment:
      ZOO_MY_ID: 2  # 设置当前 Zookeeper 实例的 ID
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888  # 配置 Zookeeper 集群中所有节点的信息

    networks:
      - kafka-network

  zookeeper-3:
    image: wurstmeister/zookeeper:3.4.6
    container_name: zookeeper-3
    hostname: zookeeper-3
    ports:
      - "2183:2181"  # 将 Zookeeper 服务端口映射到主机端口

    environment:
      ZOO_MY_ID: 3  # 设置当前 Zookeeper 实例的 ID
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888  # 配置 Zookeeper 集群中所有节点的信息

    networks:
      - kafka-network

  kafka-1:
    image: wurstmeister/kafka:2.13-2.8.1
    container_name: kafka-1
    hostname: kafka-1
    ports:
      - "9092:9092"  # 将 Kafka 服务端口映射到主机端口

    environment:
      KAFKA_BROKER_ID: 1  # 设置当前 Kafka Broker 的 ID
      KAFKA_LISTENERS: PLAINTEXT://:9092  # 配置 Kafka 监听器
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092  # 配置 Kafka 广告监听器,用于外部访问
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2182,zookeeper-3:2183  # 指定 Kafka 连接到的 Zookeeper 集群
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT  # 设置 Kafka 内部 Broker 间通信使用的监听器
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"  # 允许自动创建主题

    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3

    networks:
      - kafka-network

  kafka-2:
    image: wurstmeister/kafka:2.13-2.8.1
    container_name: kafka-2
    hostname: kafka-2
    ports:
      - "9093:9092"  # 将 Kafka 服务端口映射到主机端口

    environment:
      KAFKA_BROKER_ID: 2  # 设置当前 Kafka Broker 的 ID
      KAFKA_LISTENERS: PLAINTEXT://:9092  # 配置 Kafka 监听器
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092  # 配置 Kafka 广告监听器,用于外部访问
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2182,zookeeper-3:2183  # 指定 Kafka 连接到的 Zookeeper 集群
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT  # 设置 Kafka 内部 Broker 间通信使用的监听器
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"  # 允许自动创建主题

    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3

    networks:
      - kafka-network

  kafka-3:
    image: wurstmeister/kafka:2.13-2.8.1
    container_name: kafka-3
    hostname: kafka-3
    ports:
      - "9094:9092"  # 将 Kafka 服务端口映射到主机端口

    environment:
      KAFKA_BROKER_ID: 3  # 设置当前 Kafka Broker 的 ID
      KAFKA_LISTENERS: PLAINTEXT://:9092  # 配置 Kafka 监听器
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-3:9092  # 配置 Kafka 广告监听器,用于外部访问
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2182,zookeeper-3:2183  # 指定 Kafka 连接到的 Zookeeper 集群
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT  # 设置 Kafka 内部 Broker 间通信使用的监听器
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"  # 允许自动创建主题

    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3

    networks:
      - kafka-network

networks:
  kafka-network:
    driver: bridge

解释:

  • 这个 YAML 文件定义了一个包含三个 Zookeeper 节点和三个 Kafka 节点的 Docker Compose 配置。

  • 每个 Zookeeper 节点使用 wurstmeister/zookeeper 镜像,每个 Kafka 节点使用 wurstmeister/kafka 镜像。

  • Zookeeper 节点配置了唯一的 ZOO_MY_ID,并通过 ZOO_SERVERS 变量指定了集群中的其他 Zookeeper 节点。

  • Kafka 节点配置了唯一的 KAFKA_BROKER_IDKAFKA_LISTENERSKAFKA_ADVERTISED_LISTENERS 用于指定监听的地址和端口。KAFKA_ZOOKEEPER_CONNECT 用于连接到 Zookeeper 集群。

  • 每个 Kafka 节点都依赖于对应的 Zookeeper 节点。

  • 所有节点都连接到名为 kafka-network 的自定义 Docker 网络。

详细说明

以上是一个 Kafka 集群和一个 Zookeeper 集群的配置。这个配置是一个典型的 Kafka 高可用部署,因为 Kafka 依赖于 Zookeeper 来实现元数据的存储和管理。

具体来说:

  • Zookeeper 集群

    • zookeeper-1, zookeeper-2, zookeeper-3 是三个 Zookeeper 实例,组成了一个 Zookeeper 集群。
    • 每个 Zookeeper 实例都有一个独立的 ID (ZOO_MY_ID),并且在 ZOO_SERVERS 中指定了所有 Zookeeper 节点的地址和通信端口。
    • 这种部署方式可以确保 Zookeeper 服务的高可用性和容错性。
  • Kafka 集群

    • kafka-1, kafka-2, kafka-3 是三个 Kafka Broker 实例,组成了一个 Kafka 集群。
    • 每个 Kafka Broker 配置了自己的 Broker ID (KAFKA_BROKER_ID) 和监听器 (KAFKA_LISTENERS)。
    • KAFKA_ADVERTISED_LISTENERS 中设置了广告监听器,用于外部客户端访问。
    • KAFKA_ZOOKEEPER_CONNECT 指定了 Kafka 连接到的 Zookeeper 集群,以便存储元数据、协调分区分配和故障恢复。
    • KAFKA_INTER_BROKER_LISTENER_NAME 设置了 Broker 间通信使用的监听器。
    • KAFKA_AUTO_CREATE_TOPICS_ENABLE 允许自动创建主题,方便管理。

综上所述,这个配置提供了一个具有高可用性和容错性的 Kafka 集群。Zookeeper 集群的高可用性保证了 Kafka 的元数据管理和协调工作,而 Kafka 集群的多个 Broker 提供了数据分布和容错。这种部署方式使得 Kafka 集群能够继续工作,即使其中的某些节点发生故障。

因此,您可以使用这个配置来构建一个具有高可用性和可靠性的 Kafka 集群。

About

Kafka simple management system

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors