我正在ec2实例上运行kafka。因此,亚马逊ec2实例有两个ip,一个是内部ip,第二个是外部使用。
我从本地机器创建了producer,但它重定向到内部ip,并给出了连接失败的错误。有人能帮我在ec2实例上配置kafka吗?这样我就可以在本地运行producer了。我尝试了许多组合,但都不起作用。
发布于 2014-11-28 18:19:11
在Kafka FAQ (针对新属性进行了更新)中,您可以读取:
当代理启动时,它在ZK中注册其ip/端口。您需要确保注册的ip与生产者配置中的
bootstrap.servers
中列出的ip一致。默认情况下,注册ip由InetAddress.getLocalHost.getHostAddress()
提供。通常,这应该返回主机的真实ip。然而,有时(例如,在EC2中),返回的ip是内部ip,无法从外部连接。解决方案是通过在server.properties
中设置advertised.listeners
属性来显式地设置要在ZK中注册的主机ip和端口。
发布于 2014-11-28 18:57:35
我解决了这个问题,方法是将server.properties
中的advertised.host.name
和producer.properties
中的metadata.broker.list
设置为公共IP地址,将host.name
设置为0.0.0.0
。
发布于 2018-01-02 14:42:38
从外部网络中的消费者访问EC2上的Kafka服务器(版本kafka_2.11-1.0.0)的最简单方法是更改属性文件
kafka_2.11-1.0.0/config/server.properties
并修改以下行
listeners=PLAINTEXT://ec2-XXX-XXX-XXX-XXX.eu-central-1.compute.amazonaws.com:9092
使用你的公共地址
已在2.11-2.0.0上验证
https://stackoverflow.com/questions/27191347
复制相似问题