首页 文章

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

提问于
浏览
2

我在谷歌计算引擎上运行我的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 回答

  • 4

    您必须通过SSH访问 Cloud 计算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地址更改时更改配置文件 .

  • 0

    您是否配置了防火墙规则?你没有提到它,所以我假设没有 .

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

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

相关问题