使用docker compose运行kafka并公开不同的端口,而不是默认端口

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

我尝试使用docker compose启动kafka群集,我使用以下配置:

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    command: [start-kafka.sh]
    ports:
      - "15092:9092"
    hostname: kafka
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:15092
      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://:15092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - "zookeeper"

这两个服务都已启动并正在运行,但当我尝试使用代理从外部源生成消息时 external-ip:15092 我收到以下错误: dial tcp: lookup kafka: no such host 你能帮我找出缺少什么配置吗?
谢谢

xvw2m8pv

xvw2m8pv1#

你得到的是“没有这样的主机”,这甚至发生在端口被使用之前。您需要在同一docker网络中的另一个容器中运行代码,以便解析服务名称
Kafka不是这样工作的(一个简单的港口前进),无论如何
两位听众的音量都设定在9092
您需要添加/更改包含 externalIP:15092 为了让它工作,您可以找到多个地方记录侦听器的差异(包括该容器的wiki页面)
所以, KAFKA_LISTENERS: INSIDE://:9092 你所需要的(或者更恰当地说,是 INSIDE://0.0.0.0:9092 )
但是你需要编辑

KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://<your_external_IP>:15092

相关问题