我一直试图在我的本地计算机上运行一个连接到gcp内部运行的kafka服务器的消费者。
kafka和zookeeper在同一gcp vm示例上运行
第一步:启动zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
第二步:开始Kafka
bin/kafka-server-start.sh config/server.properties
如果在gcp vm示例中运行consumer,它可以正常工作:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
我验证了防火墙规则,并且我可以从本地计算机访问,我可以访问公共ip和kafka服务器运行的端口。
我测试了许多选项,更改了kafka的server.properties,例如:
advertised.host.name=public-ip
或者
advertised.listeners=public-ip
按照关于connecting-kafka-running-on-ec2-machine-from-my-local-machine的答案,但没有成功。
1条答案
按热度按时间flmtquvp1#
根据官方文件:
播发的.listeners
侦听器发布到zookeeper以供客户端使用。在iaas环境中,这可能需要与代理绑定到的接口不同。如果未设置,则将使用侦听器的值。与侦听器不同,播发0.0.0.0元地址是无效的。
在测试了许多不同的选项之后,这个解决方案对我很有效:
设置两个侦听器,一个外部侦听器使用公共ip,一个内部侦听器使用私有ip:
说明:
在许多场景中,例如在aws上部署时,集群中kafka代理的外部公布地址与kafka使用的内部网络接口不同。
另外,请记住设置防火墙规则,以在“其他”中公开外部侦听器上的端口,以便从外部计算机连接到该端口。
注意:重要的是要限制对授权客户的访问。您可以使用网络防火墙规则来限制访问。本指南适用于涉及RFC1918和公共ip的场景;但是,在使用公共ip地址时,保护kafka端点的安全更为重要,因为任何人都可以访问它。
摘自谷歌解决方案。