Как добавить больше брокеров в Kafka Docker, используя docker-compose - PullRequest
0 голосов
/ 23 сентября 2019

Я использую 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?Когда я запускал Kafka в режиме без докера, мне просто нужен был один порт (9092).

1 Ответ

1 голос
/ 23 сентября 2019

Вы не можете использовать масштабирование, потому что идентификаторы брокера должны отличаться.

И вам не хватает этого верхнего раздела из нового сервиса

Вам нужны два порта, потому что один разрешает 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 на одном компьютере не повышает производительность (ониобщий доступ к одному и тому же диску и занятие больше места через репликацию) или отказоустойчивость (это все на одной машине)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...