【发布时间】:2021-05-09 09:38:03
【问题描述】:
我创建了一个包含 3 个节点的集群(谷歌云)。 Zookeeper 在所有节点上运行,我已经在其中一个节点上启动了 Kafka。我可以从集群上的任何机器进行通信(发布/使用),但是当我尝试从远程机器连接时,我得到了 NoBrokersAvailable 异常。
我在防火墙中打开了端口进行测试,我尝试在 Kafka 配置中弄乱adverted_host 和端口,但我无法连接。
预期的配置是什么? - 如果有合适的默认值,我会期望我的配置在内部和远程情况下都可以工作,但事实并非如此。我不确定 zookeeper/kafka 配置的哪一部分允许我调整它。 该怎么办?
【问题讨论】:
-
可能有太多的事情——例如,机器可能正在运行
iptables。或者 Zookeeper 和 Kafka 正在监听不可路由的 IP 地址(例如10.x.x.x1或192.168.x.x),或者谁知道它可能是什么。 -
谢谢大卫。著名的。我会调查网络,如果我(曾经)深入了解它,我会在这里记录下来。
-
更新但不高兴:我简化了问题。我将一个节点与 zookeeper 和 kafka 一起使用。我使用了 confluent kafka 发行版,它提供了一些好处。我使用 REST 服务器进行本地和远程测试,验证 Zookeeper 配置正确,并且我可以从外部连接到所述 REST 服务器。当我启动 Kafka 时,我注意到输出行:> 在路径 /brokers/ids/0 注册代理 0,地址为:PLAINTEXT -> EndPoint(cluster-3-m,9092,PLAINTEXT)。在上面写着“cluster-3-m”的地方,我主要使用的是公共 IP。显然,代理已启动并绑定 - python 客户端另有说明!
-
您是否使用完全限定的主机名引用代理?当代理响应客户时,他们会通过他们的 fqdn 引用代理,这可能不是您设置为在后续内部调用中访问它们的方式。
标签: apache-kafka kafka-consumer-api