以下是一个简单的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-composeyml 怎么写

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

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