【问题标题】:how can i use KafkaLoggingHandler to connect multiple brokers?如何使用 KafkaLoggingHandler 连接多个代理?
【发布时间】:2021-12-24 12:38:43
【问题描述】:

我写的KafkaLoggingHandler如下图,如何使用KafkaLoggingHandler连接多个broker?

kafka_log_handler = KafkaLoggingHandler(
     local_kafka-1_1:9092, # ex:how can i add local_kafka-2_1??
     ...
     ...
)

这是我的 docker-compose.yml ,我通过 kafka 图像创建了两个集群。

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka-1:
    image: wurstmeister/kafka
    ports:
      - "9095:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka1.test.local
      KAFKA_ADVERTISED_PORT: 9095
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LOG_DIRS: /kafka/logs
      KAFKA_BROKER_ID: 500
      KAFKA_offsets_topic_replication_factor: 3
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${KAFKA_DATA}/500:/kafka

  kafka-2:
    image: wurstmeister/kafka
    ports:
      - "9096:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka2.test.local
      KAFKA_ADVERTISED_PORT: 9096
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LOG_DIRS: /kafka/logs
      KAFKA_BROKER_ID: 501
      KAFKA_offsets_topic_replication_factor: 3
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${KAFKA_DATA}/501:/kafka

【问题讨论】:

    标签: python docker apache-kafka


    【解决方案1】:

    您只需用逗号分隔它们

    'kafka1.test.local:9095,kafka2.test.local:9096'

    但是,引导协议会为您处理这个问题,因此指定多个代理的唯一原因是为了客户端容错(并且在同一台机器上运行多个代理并不能保证任何容错)

    【讨论】:

    • 成功了!感谢您的帮助!
    • 对不起,我在我的项目中发现了一个问题,我使用 'kafka1.test.local:9095,kafka2.test.local:9096' 创建了两个代理,但是当我杀死 kafka1. test.local:9095 or kafka2.test.local:9096',其他活跃的broker都打不通(名字或服务不知道,是你的adverted.listeners(在kafka 9之前叫adverted.host.name)),你呢知道我该如何解决吗?
    • 如错误所说,确保广告名称正确
    • 好!非常有用!感谢您的帮助!
    猜你喜欢
    • 2021-04-27
    • 2020-01-18
    • 2016-06-18
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多