linux—为Kafka与外界的通信打开一个端口

ssgvzors  于 2021-06-07  发布在  Kafka
关注(0)|答案(3)|浏览(426)

我在azure有一个vm(linux操作系统),上面有hortonworks,它启动了kafka。
kafka服务正在运行,我可以在vm中创建生产者和消费者。
我有服务器的ip,我也可以登录到ambari使用8080端口。
当我试图从我的java应用程序向kafka发送消息时,60秒后我收到一个timouteexception。
我需要做些什么才能为来自vm外部的kafka通信设置正确的端口?
我认为这里的主要问题是,kafka监听的是本地ip而不是vmip(wan)。
任何帮助都将不胜感激。。。

5lwkijsr

5lwkijsr1#

(将我的回复复制粘贴到类似的帖子上)
对于kafka的最新版本(本文中的0.10.0),您不想使用 advertised.host.name 完全。事实上,就连[文件]都说 advertised.host.name 已弃用。此外,Kafka不仅会将此作为生产者/消费者的“广告”主机名,也会将其作为其他代理的主机名(在多代理环境中)……如果您对代理使用不同的(可能是内部的)dns,那么这是一种痛苦……而且您真的不想从事向个人添加条目的业务 /etc/hosts 经纪人的名字(呃!)
因此,基本上,您希望代理使用内部名称,但仅对生产者和消费者使用外部FQDN。为此,您将更新 advertised.listeners 相反。

xtfmy6hx

xtfmy6hx2#

是否设置了kafka advised.host.name和advised.port环境变量?这就是你向外界展示自己的方式。

l2osamch

l2osamch3#

如果您已使用azure资源管理器工作流创建虚拟机,则您拥有一个已自动创建的网络安全组。您需要在nsg中创建规则,以使Kafka可用。请参见:https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-nsg/
如果您使用了azureclassic部署工作流,则需要定义一个端点来公开kafka。请参见:https://azure.microsoft.com/fr-fr/documentation/articles/virtual-machines-windows-classic-setup-endpoints/
希望这有帮助,
朱利安

相关问题