【问题标题】:How to add more brokers in Kafka Docker using docker-compose如何使用 docker-compose 在 Kafka Docker 中添加更多代理
【发布时间】:2019-09-23 12:33:52
【问题描述】:

我正在运行 Confluent Docker。我正在尝试使用 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)。

【问题讨论】:

    标签: docker apache-kafka docker-compose


    【解决方案1】:

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

    而您在新服务中缺少这个顶部部分

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

    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
    

    如果你真的想运行一个代理集群,Confluent Helm Charts 或 Strimzi 项目会很有用,但是在一台机器上运行多个 Kafka 并不能提高任何性能(它们共享同一个磁盘,并且通过复制占用更多空间)或弹性(全部在一台机器上)

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2022-01-25
      相关资源
      最近更新 更多