我在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
答案 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;