下面是一个示例的 docker-compose.yml 文件,用于部署 ZooKeeper、Kafka 和 Kafka Manager 集群,并挂载数据目录:

version: '3'

services:
  zookeeper-1:
    image: zookeeper
    restart: always
    hostname: zookeeper-1
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888
    volumes:
      - ./data/zookeeper-1:/data

  zookeeper-2:
    image: zookeeper
    restart: always
    hostname: zookeeper-2
    ports:
      - "2182:2181"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888
    volumes:
      - ./data/zookeeper-2:/data

  zookeeper-3:
    image: zookeeper
    restart: always
    hostname: zookeeper-3
    ports:
      - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 server.3=zookeeper-3:2888:3888
    volumes:
      - ./data/zookeeper-3:/data

  kafka-1:
    image: wurstmeister/kafka
    restart: always
    hostname: kafka-1
    ports:
      - "9091:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: kafka-1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181/kafka
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
    volumes:
      - ./data/kafka-1:/var/lib/kafka/data

  kafka-2:
    image: wurstmeister/kafka
    restart: always
    hostname: kafka-2
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: kafka-2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181/kafka
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
    volumes:
      - ./data/kafka-2:/var/lib/kafka/data

  kafka-3:
    image: wurstmeister/kafka
    restart: always
    hostname: kafka-3
    ports:
      - "9093:9092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: kafka-3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181/kafka
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
    volumes:
      - ./data/kafka-3:/var/lib/kafka/data

  kafka-manager:
    image: hlebalbau/kafka-manager
    restart: always
    ports:
      - "9000:9000"
    environment:
      ZK_HOSTS: zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
    depends_on:
      - kafka-1
      - kafka-2
      - kafka-3

该文件中定义了 3 个 ZooKeeper 节点(zookeeper-1、zookeeper-2、zookeeper-3),3 个 Kafka 节点(kafka-1、kafka-2、kafka-3)和一个 Kafka Manager 节点(kafka-manager)。每个节点都有一个主机名和一个容器名,容器名与主机名相同。每个容器都通过环境变量指定其在集群中的角色和其他必要的配置信息。

每个节点的数据目录都挂载到本地主机上的一个目录中,以便数据可以持久化存储。

最后,Kafka Manager 依赖于 Kafka 节点,因此它将在 Kafka 节点之后启动。它需要知道 ZooKeeper 的主机名和端口号,以便连接到 Kafka 集群。

您可以使用以下命令启动该集群:

$ docker-compose up -d

注意:在使用该配置文件之前,您需要创建本地主机上的数据目录。在该配置文件中,数据目录的路径为 ./data/<container-name>,其中 <container-name> 是容器的名称。例如,zookeeper-1 的数据目录路径为 ./data/zookeeper-1。在启动容器之前,确保这些目录已经存在

docker 部署zookeeper kafka kafka-manager 集群并挂载数据目录 docker-composeyml 怎么写

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

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