如何使用Docker compose在Kafka Docker中添加更多代理

如何使用Docker compose在Kafka Docker中添加更多代理,docker,apache-kafka,docker-compose,Docker,Apache Kafka,Docker Compose,我在经营汇合码头。我正在尝试使用docker compose添加更多代理 (我尝试了docker compose scale kafka=3,但没有成功。) 这是我的docker compose.yml version: '2' services: broker: image: confluentinc/cp-enterprise-kafka:5.3.1 hostname: broker container_name: broker depends_on:

我在经营汇合码头。我正在尝试使用docker compose添加更多代理

(我尝试了
docker compose scale kafka=3
,但没有成功。)

这是我的
docker compose.yml

version: '2'
services:

  broker:
    image: confluentinc/cp-enterprise-kafka:5.3.1
    hostname: broker
    container_name: broker
    depends_on:
      - zookeeper
    ports:
      - "29092:29092"
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
      CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
      CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
      CONFLUENT_METRICS_ENABLE: 'true'
      CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'

#To add more broker, do I do the following? 

KAFKA_BROKER_ID: 2        // just add this? 
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
      CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
      CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
      CONFLUENT_METRICS_ENABLE: 'true'
      CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'
1) 要添加更多代理,我需要在
docker compose.yml
中添加或更改什么


2) 为什么Docker使用另一个端口29092?当我在非docker模式下运行Kafka时,我只需要一个端口(9092)

不能使用scale,因为代理ID需要不同

你错过了新服务的顶部部分

您需要两个端口,因为一个允许主机上的kafka客户端访问kafka(9092),另一个允许Docker服务访问kafka(29092)

但是,如果您真的想运行一个代理集群,那么Confluent Helm Charts或Strimzi项目将非常有用,但是在一台机器上运行多个Kafka不会提高任何性能(它们共享同一个磁盘,并通过复制占用更多空间)或恢复能力(都在一台机器上)

broker2:
   image: confluentinc/cp-enterprise-kafka:5.3.1
   hostname: broker2
   container_name: broker2
   depends_on:
      - zookeeper
   ports:
       - "29192:29092" # technically, this one isn't needed to be mapped from the host 
       - "9192:9092"
   environment:
        KAFKA_BROKER_ID: 2
        KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
        KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
        KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
        KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
        KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
        KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
        CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
        CONFLUENT_METRICS_REPORTER_ZOOKEEPER_CONNECT: zookeeper:2181
        CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1