sms*_*190 37 amazon-ec2 apache-kafka
我在ec2实例上运行kafka.因此,amazon ec2实例有两个ips,一个是内部ip,第二个是外部使用.
我从本地机器创建了生产者,但它重定向到内部ip并给我连接失败错误.任何人都可以帮我在ec2实例上配置kafka,这样我就可以从本地机器运行生产者了.我尝试了很多组合,但没有奏效.
Lun*_*ahl 37
在Kafka常见问题解答中,您可以阅读:
当代理启动时,它会在ZK中注册其ip/port.您需要确保已注册的ip与
metadata.broker.list
生产者配置中列出的内容一致.默认情况下,注册的ip由InetAddress.getLocalHost.getHostAddress()
.通常,这应该返回主机的真实IP.但是,有时(例如,在EC2中),返回的ip是内部ip,不能从外部连接.解决方案是通过设置host.name
属性来显式设置要在ZK中注册的主机IPserver.properties
.在另一种罕见的情况下,绑定主机/端口与用于客户端连接的主机/端口不同,您可以设置advertised.host.name
和advertised.port
用于客户端连接.
sms*_*190 35
我解决了这个问题,通过设置advertised.host.name
在server.properties
并metadata.broker.list
在producer.properties
公共IP地址,并host.name
给0.0.0.0
.
小智 16
我刚刚在AWS中做到了这一点.首先让Kafka服务器使用host.name监听正确的接口/ IP.对于您的情况,这将是内部IP,而不是localhost,因为您的意图是外部Kafka客户端连接.任何本地客户端都需要使用相同的地址,而不是localhost.
然后将advertised.host.name设置为主机名,而不是IP地址.诀窍是让主机名始终解析为内部和外部机器的正确IP.我在里面使用/ etc/hosts和在外面使用DNS.在这里查看我关于Kafka和名称解析的完整答案.
Pet*_*ncz 14
如何从外部网络中的消费者访问EC2上的Kafka服务器(版本kafka_2.11-1.0.0)的最简单方法是更改属性文件
kafka_2.11-1.0.0/config/server.properties
Run Code Online (Sandbox Code Playgroud)
并修改以下行
listeners=PLAINTEXT://ec2-XXX-XXX-XXX-XXX.eu-central-1.compute.amazonaws.com:9092
Run Code Online (Sandbox Code Playgroud)
使用您的公共地址
在2.11-2.0.0上验证
小智 6
如果你想从局域网访问,请更改以下2个文件-
在config/server.properties
:
advertised.listeners=PLAINTEXT://server.ip.in.lan:9092
Run Code Online (Sandbox Code Playgroud)在config/producer.properties
:
bootstrap.servers=server.ip.in.lan:9092
Run Code Online (Sandbox Code Playgroud)就我而言,该server.ip.in.lan
值是192.168.15.150
归档时间: |
|
查看次数: |
39894 次 |
最近记录: |