无法从网络设备正确发送到kafka docker

jdgnovmf  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(537)

这个问题在这里已经有答案了

连接Kafka在docker中跑步(3个答案)
8个月前关门了。
我正在尝试在我的主机maschine上设置kafka/docker设置,并从网络设备连接到它。我用的是比特纳米/Kafka。这是我的docker compose文件:

version: '2'

services:
  zookeeper:
    image: 'bitnami/zookeeper:3'
    ports:
      - '2181:2181'
    volumes:
      - 'zookeeper_data:/bitnami'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:2'
    ports:
      - '9092:9092'
      - '29092:29092'
    volumes:
      - 'kafka_data:/bitnami'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT_HOST://:29092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local

当我在我的主机maschine(不在docker中)上运行python脚本时,mercury是我的主机名,它工作得很好:

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['mercury:29092'])
print("Connected")
producer.send('topic', b'It works!')
print('Theoretically send')
producer.close()
print('Closed')

当我尝试从另一个网络设备运行相同的脚本时,它不起作用。我连个错误都没有。脚本也运行得很好,因此在尝试连接或发送时没有延迟。只有当i.f.e.使用错误的端口或不存在的主题时,才会发生这种情况。尤其是最后一部分,让我相信脚本可以连接,但不能正确地发送消息。我不知道为什么会这样。我的端口设置正确吗?还是需要一些额外的Kafka环境设置?
提前谢谢你的帮助

1szpjjfi

1szpjjfi1#

问题在于Kafka广告听众的配置。
tl/dr公司;改变 PLAINTEXT_HOST://localhost:29092PLAINTEXT_HOST://mercury:29092KAFKA_CFG_ADVERTISED_LISTENERS 您的kafka集群应该可以从其他机器访问。
在更复杂的网络中,例如由于不同的安全要求,可能期望具有内部网络和外部网络。Kafka允许通过设置 listeners 以及 advertised.listeners 分别是。advised.listeners的条目应该表示可以从集群外部的客户端访问kafka集群的url。如果这仅限于 localhost ,除您的主机外,任何计算机都无法连接到群集。

相关问题