无法从本地计算机连接到谷歌计算引擎上的kafka服务器

时间:2015-09-27 19:13:37

标签: google-compute-engine apache-kafka apache-zookeeper

我在google计算引擎上运行我的zookeeper和kafka服务器。两者都在默认端口上运行(zookeeper on 2181,kafka on 9092)。两者都在同一个实例上运行。我也打开了两个端口。在我的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

但是,如果从我的本地机器尝试相同,我在生产者和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。

我在计算引擎中配置了下面提到的防火墙规则

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 个答案:

答案 0 :(得分:4)

您必须通过SSH访问云计算VM实例,然后编辑kafka配置文件。

$ sudo vim /opt/bitnami/kafka/config/server.properties

取消注释#advertiseised.listeners = PLAINTEXT://:9092并替换为advertised.listeners = PLAINTEXT:// [instance_public_id_address]:9092

作为最后一步重启kafka服务

sudo /opt/bitnami/ctlscript.sh restart

重要的是要考虑GCP计算VM的默认IP地址是短暂的,因此您必须在Kafka实例的GCP配置面板中将其更改为静态,以避免每次更改配置文件的IP地址变化。

答案 1 :(得分:0)

您是否配置了任何防火墙规则?你没有提到它,所以我不这么认为。

来自https://cloud.google.com/compute/docs/networks-and-firewalls#firewalls

&#34;默认情况下,来自网络外部的所有传入流量都被阻止,如果没有适当的防火墙规则,则不允许任何数据包进入实例。&#34;