打开一个端口,用于Kafka与外界的通信

时间:2016-04-04 06:22:28

标签: linux azure configuration port apache-kafka

我在Azure中有一个VM(Linux操作系统),其上有Hortonworks,它启动了Kafka。

  • Kafka服务正在运行,我可以在VM中创建生产者和消费者。

  • 我有服务器IP,我也可以使用8080端口登录Ambari。

  • 当我尝试从我的Java应用程序向Kafka发送消息时,我会在60秒后收到TimoutEception。

为了从VM外部为Kafka通信设置正确的端口,我需要做什么?

我认为这里的问题是,Kafka正在侦听本地IP而不是VM IP(WAN)。

任何帮助都会非常感激......

3 个答案:

答案 0 :(得分:2)

如果您已使用Azure资源管理器工作流创建VM,则您拥有自动创建的网络安全组。您需要在NSG中创建规则以使Kafka可用。请参阅:https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-nsg/

如果您已使用Azure经典部署工作流,则需要定义端点以公开Kafka。请参阅:https://azure.microsoft.com/fr-fr/documentation/articles/virtual-machines-windows-classic-setup-endpoints/

希望这有帮助,

于连

答案 1 :(得分:1)

Did you set Kafka advertised.host.name and advertised.port environment variables? That's how you present yourself to the outside world.

答案 2 :(得分:0)

Copy and pasting my response to a similar post

对于最新版本的Kafka(撰写本文时为0.10.0),您根本不想使用advertised.host.name。事实上,即使是[文档]也指出advertised.host.name已被弃用。此外,卡夫卡不仅将其作为广告宣传用户。生产者/消费者的主机名,但其他经纪人的主机名(在多经纪人环境中)......如果您使用不同的(或许是内部)经纪人的DNS ......你真的不想开始向经纪人的个人/etc/hosts添加条目(ew!)

因此,基本上,您希望代理使用内部名称,但仅为生产者和使用者使用外部FQDN 。为此,您将更新advertised.listeners