我正在谷歌计算引擎上运行zookeeper和kafka服务器。两者都在默认端口上运行(2181上的zookeeper和9092上的kafka)。两者都在同一个示例上运行。我也打开了两个港口。在我的server.properties中,我已配置
zookeeper.connect=<InternalIP>:2181
host.name=localhost
如果我尝试从同一台服务器推送/使用消息,我可以这样做来推送/使用我使用的消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
但是,如果尝试从本地计算机执行相同操作,我会在producer和java.net.connectexception中得到kafka.common.failedtosendmessageexception:连接被拒绝,以防我尝试通过
bin/kafka-console-producer.sh --broker-list <ExternalIP>:9092 --topic topic1
bin/kafka-console-consumer.sh --zookeeper <ExternalIP>:2181 --topic topic1 --from-beginning
请注意,我可以从本地系统ping外部ip。
我已经在compute engine中配置了下面提到的防火墙规则
Description
kafka port enabled
Network
default
Source filter
Allow from any source (0.0.0.0/0)
Allowed protocols and ports
tcp:9092
描述
zookeeper port enabled
Network
default
Source filter
Allow from any source (0.0.0.0/0)
Allowed protocols and ports
tcp:2181
2条答案
按热度按时间t3psigkw1#
您必须通过ssh访问云计算vm示例,然后编辑kafka配置文件。
取消对行#advised.listeners=plaintext://:9092的注解,并替换为advised.listeners=plaintext://[示例\u公共\u id \u地址]:9092
最后一步,重新启动kafka服务
重要的是要考虑gcp compute vm的默认ip地址是临时的,因此您必须在kafka示例的gcp配置面板中将其更改为static,以避免每次ip地址更改时都更改配置文件。
dzhpxtsq2#
你配置了防火墙规则吗?你没提,所以我想没有。
从https://cloud.google.com/compute/docs/networks-and-firewalls#firewalls :
默认情况下,来自网络外部的所有传入流量都被阻止,如果没有适当的防火墙规则,任何数据包都不允许进入示例