我正在谷歌计算引擎上运行我的动物园管理员和卡夫卡服务器。两者都在默认端口上运行(zookeeper 在 2181 上,kafka 在 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
您必须通过SSH访问云计算虚拟机实例,然后编辑kafka配置文件。
$ sudo vim /opt/bitnami/kafka/config/server.properties
取消注释行#advertisement.listeners=PLAINTEXT://:9092 并替换为advertising.listeners=PLAINTEXT://[instance_public_id_address]:9092
最后一步重启 kafka 服务
sudo /opt/bitnami/ctlscript.sh restart
重要的是要考虑 GCP 计算虚拟机的默认 IP 地址是临时的,因此您必须在 Kafka 实例的 GCP 配置面板中将其更改为静态,以避免每次 IP 地址更改时都更改配置文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)