【问题标题】:Kafka failing to connect broker on docker [duplicate]Kafka无法在docker上连接代理[重复]
【发布时间】:2020-03-22 08:11:08
【问题描述】:

我已经使用 docker-compose 文件设置了一个 Kafka 集群,我在其中指定了这样的代理:

kafka1:
    image: confluentinc/cp-kafka:latest
    hostname: kafka1
    ports:
      - "19092:19092"
    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:12181,zookeeper-2:12181,zookeeper-3:12181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:19092

现在,当我尝试使用 js 脚本创建主题时,我会像下面这样引用代理(为了这篇文章,我只附上了关于 1 个代理的代码):

try
    {
        const kafka = new Kafka({
            clientId: 'myapp',
            brokers: ['kafka1:19092','kafka2:29092','kafka3:39092']
        })

我收到此错误:

{"level":"ERROR","timestamp":"2020-03-21T19:06:13.653Z","logger":"kafkajs","message":"[Connection] Connection error: getaddrinfo ENOTFOUND kafka1","broker":"kafka1:19092","clientId":"myapp","stack":"Error: getaddrinfo ENOTFOUND kafka1\n    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)"}

我觉得我已经用尽互联网试图解决这个问题。有人对如何连接到 docker 中的代理有任何建议吗?

【问题讨论】:

  • 也许您忘记了 URL 的方案部分? brokers: ['kafka1:19092','kafka2:29092','kafka3:39092']
  • 你能解释一下你的意思吗?我不太明白。我已经按照您在评论中列出的方式列出了经纪人
  • I mean like: brokers: ['tcp://kafka1:19092','kafka2:29092','kafka3:39092']
  • @D.Richard 似乎不起作用。
  • 这篇文章可能对你有帮助rmoff.net/2018/08/02/kafka-listeners-explained

标签: node.js docker apache-kafka


【解决方案1】:

在 cmets 中查看 Robin 的博客。

否则,您的代码将只能在 docker 容器中工作,因为您指的是 Docker 服务名称,您的 DNS 服务器无法解析这些名称

换句话说 1) 调整广告侦听器(参见博客)以包含 localhost 2) 当它在容器外运行时在代码中使用 localhost

注意:一台机器上的 3 个代理没有任何改进

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2021-12-22
    • 1970-01-01
    • 2021-10-05
    • 2019-03-07
    相关资源
    最近更新 更多