我正在ec2示例上运行kafka。所以amazonec2示例有两个ip,一个是内部ip,另一个是外部ip。我从本地机器创建了producer,但它重定向到内部ip并给我连接失败的错误。谁能帮我在ec2示例上配置kafka,这样我就可以在本地机器上运行producer了。我尝试了许多组合,但都没有成功。
dfuffjeb1#
下面是从ec2示例外部连接kafka的步骤。打开ec2上的kafka服务器属性文件。/Kafka2.11-2.0.0/config/server.properties将advised.listeners的值设置为播发的.listeners=plaintext://ec2-xx---xx.compute-1.amazonaws.com:9092这应该是ec2示例的公共dns(ipv4)。停止Kafka服务器。启动kafka服务器以查看上面的配置更改。现在您可以从外部或本地主机连接到您的kafka of ec2示例。在Kafka2.11-2.0.0上试用
j91ykkif2#
ssh到您的ec2示例,或者无论您是在托管kafka。 sudo nano /etc/hosts 添加: 127.0.0.1 <your-host-name> localhost 就我而言: 127.0.0.1 ec2-12-34-56-78.ap-southeast-1.compute.amazonaws.com 保存并退出。
sudo nano /etc/hosts
127.0.0.1 <your-host-name> localhost
127.0.0.1 ec2-12-34-56-78.ap-southeast-1.compute.amazonaws.com
kqlmhetl3#
我刚在aws做的。首先让kafka服务器使用host.name在正确的接口/ip上侦听。对于您的情况,这将是内部ip,而不是localhost,因为您的目的是让外部kafka客户机连接。任何本地客户端都需要使用相同的地址,而不是localhost。然后将advised.host.name设置为主机名,而不是ip地址。诀窍是让主机名始终解析为内部和外部机器的正确ip。我在内部使用/etc/hosts,在外部使用dns。请看我关于Kafka和名字解析的完整答案。
zf2sa74q4#
在kafka常见问题解答(针对新属性更新)中,您可以阅读:当代理启动时,它在zk中注册其ip/端口。您需要确保注册的ip与中列出的一致 bootstrap.servers 在producer配置中。默认情况下,注册的ip由 InetAddress.getLocalHost.getHostAddress() . 通常,这应该返回主机的真实ip。但是,有时(例如在ec2中),返回的ip是内部ip,不能从外部连接到。解决方案是通过设置 advertised.listeners 中的属性 server.properties .
bootstrap.servers
InetAddress.getLocalHost.getHostAddress()
advertised.listeners
server.properties
ix0qys7i5#
如何从外部网络中的使用者访问ec2上的kafka服务器(版本kafka\u 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验证
ki0zmccv6#
如果您想从lan访问,请更改以下2个文件-在 config/server.properties :
config/server.properties
advertised.listeners=PLAINTEXT://server.ip.in.lan:9092
在 config/producer.properties :
config/producer.properties
bootstrap.servers=server.ip.in.lan:9092
就我而言 server.ip.in.lan 价值是 192.168.15.150
server.ip.in.lan
192.168.15.150
bgibtngc7#
对于ec2,您应该编辑 /etc/hosts 要添加的文件:
/etc/hosts
XXX.XXX.XXX.XXX ip-YYY-YYY-YYY-YYY
其中。。。是您的外部ip,ip yyy yyy yyy是 hostname 命令。你可以用 127.0.0.1 而不是在服务器内部进行通信的外部ip。 host.name 已弃用-按原样 advertised.host.name 以及 advertised.port
hostname
127.0.0.1
host.name
advertised.host.name
advertised.port
dxxyhpgq8#
我通过设置 advertised.host.name 在 server.properties 以及 metadata.broker.list 在 producer.properties 到公共ip地址和 host.name 至 0.0.0.0 .
metadata.broker.list
producer.properties
0.0.0.0
8条答案
按热度按时间dfuffjeb1#
下面是从ec2示例外部连接kafka的步骤。
打开ec2上的kafka服务器属性文件。
/Kafka2.11-2.0.0/config/server.properties
将advised.listeners的值设置为
播发的.listeners=plaintext://ec2-xx---xx.compute-1.amazonaws.com:9092
这应该是ec2示例的公共dns(ipv4)。
停止Kafka服务器。
启动kafka服务器以查看上面的配置更改。
现在您可以从外部或本地主机连接到您的kafka of ec2示例。
在Kafka2.11-2.0.0上试用
j91ykkif2#
ssh到您的ec2示例,或者无论您是在托管kafka。
sudo nano /etc/hosts
添加:127.0.0.1 <your-host-name> localhost
就我而言:127.0.0.1 ec2-12-34-56-78.ap-southeast-1.compute.amazonaws.com
保存并退出。kqlmhetl3#
我刚在aws做的。首先让kafka服务器使用host.name在正确的接口/ip上侦听。对于您的情况,这将是内部ip,而不是localhost,因为您的目的是让外部kafka客户机连接。任何本地客户端都需要使用相同的地址,而不是localhost。
然后将advised.host.name设置为主机名,而不是ip地址。诀窍是让主机名始终解析为内部和外部机器的正确ip。我在内部使用/etc/hosts,在外部使用dns。请看我关于Kafka和名字解析的完整答案。
zf2sa74q4#
在kafka常见问题解答(针对新属性更新)中,您可以阅读:
当代理启动时,它在zk中注册其ip/端口。您需要确保注册的ip与中列出的一致
bootstrap.servers
在producer配置中。默认情况下,注册的ip由InetAddress.getLocalHost.getHostAddress()
. 通常,这应该返回主机的真实ip。但是,有时(例如在ec2中),返回的ip是内部ip,不能从外部连接到。解决方案是通过设置advertised.listeners
中的属性server.properties
.ix0qys7i5#
如何从外部网络中的使用者访问ec2上的kafka服务器(版本kafka\u 2.11-1.0.0),最简单的方法是更改属性文件
并修改以下行
使用公共广播
2.11-2.0.0验证
ki0zmccv6#
如果您想从lan访问,请更改以下2个文件-
在
config/server.properties
:在
config/producer.properties
:就我而言
server.ip.in.lan
价值是192.168.15.150
bgibtngc7#
对于ec2,您应该编辑
/etc/hosts
要添加的文件:其中。。。是您的外部ip,ip yyy yyy yyy是
hostname
命令。你可以用127.0.0.1
而不是在服务器内部进行通信的外部ip。host.name
已弃用-按原样advertised.host.name
以及advertised.port
dxxyhpgq8#
我通过设置
advertised.host.name
在server.properties
以及metadata.broker.list
在producer.properties
到公共ip地址和host.name
至0.0.0.0
.