以下是一个简单的 docker-compose.yml 文件示例,用于部署一个包含 3 个 Kafka 节点的 Kafka 集群:

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - '2181:2181'

  kafka1:
    image: wurstmeister/kafka
    container_name: kafka1
    depends_on:
      - zookeeper
    ports:
      - '9092:9092'
    environment:
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:29092,EXTERNAL://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  kafka2:
    image: wurstmeister/kafka
    container_name: kafka2
    depends_on:
      - zookeeper
    ports:
      - '9093:9092'
    environment:
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka2:29092,EXTERNAL://localhost:9093
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 2
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  kafka3:
    image: wurstmeister/kafka
    container_name: kafka3
    depends_on:
      - zookeeper
    ports:
      - '9094:9092'
    environment:
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka3:29092,EXTERNAL://localhost:9094
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 3
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

该文件定义了 4 个服务:zookeeper、kafka1、kafka2、kafka3。其中 zookeeper 服务使用 wurstmeister/zookeeper 镜像,用于提供 Kafka 所需的协调服务。kafka1、kafka2、kafka3 服务则使用 wurstmeister/kafka 镜像,用于提供 Kafka 节点服务。

在这个示例中,使用了 Kafka 的多个监听器机制,以便 Kafka 节点可以在内部(即容器之间)和外部(即容器和主机之间)进行通信。每个 Kafka 节点都有一个唯一的 ID,可以通过 KAFKA_BROKER_ID 环境变量进行设置。

为了确保 Kafka 节点可以在容器之间进行通信,需要将 Docker 套接字(/var/run/docker.sock)挂载到每个 Kafka 节点容器中。

此外,还需要在主机上安装 Docker 和 Docker Compose,并在命令行中执行以下命令启动 Kafka 集群:

docker-compose up -d

这将启动所有服务,并将它们放在后台运行。Kafka 集群现在应该可以通过 localhost:9092、localhost:9093 和 localhost:9094 访问。

Docker 部署 Kafka 集群:使用 Docker Compose 配置示例

原文地址: https://www.cveoy.top/t/topic/nu9k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录