错误 Apache Kafka ubuntu vagrant - advertised.listeners and listeners

Error Apache Kafka ubuntu vagrant - advertised.listeners and listeners

我是 运行 一台流浪主机 Ubuntu 20.04 on 192.168.50.4:

config.vm.box = "bento/ubuntu-20.04"
...
config.vm.network "private_network", ip: "192.168.50.4"

除了 LAN 默认设置之外,网络方面没有什么太复杂的。

然后我按照 this steps 安装了 Kafka(我知道有一个 Vagrant Box,我只是想自己安装)。

现在的问题:

a) - 如果我在 server.properties 中保留默认值:

#listeners=PLAINTEXT://:9092
...
#advertised.listeners=PLAINTEXT://your.host.name:9092

(均有评论)

来宾机器的生产者和消费者sh文件都可以正常工作。 但是我在主机上的 python 脚本没有:

...
settings = {
    'bootstrap.servers': '192.168.50.4:9092',
    'group.id': 'mygroup',
    'client.id': 'client-1',
    'enable.auto.commit': True,
    'session.timeout.ms': 6000,
    'default.topic.config': {'auto.offset.reset': 'smallest'}
}
...

(完整示例 here

报错:

...
%3|1612854723.928|FAIL|client-1#consumer-1| [thrd:GroupCoordinator]: GroupCoordinator: vagrant.vm:9092: Failed to resolve 'vagrant.vm:9092': Name or service not known (after 29ms in state CONNECT)
...

我已经试过了:

listeners=PLAINTEXT://localhost:9092
...
advertised.listeners=PLAINTEXT://192.168.50.4:9092

这样问题仍然存在:

%3|1612855333.958|FAIL|client-1#consumer-1| [thrd:192.168.50.4:9092/bootstrap]: 192.168.50.4:9092/bootstrap: Connect to ipv4#192.168.50.4:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)

b) - 如果我只是将 server.properties 中的 listeners 更改为:

...
listeners=PLAINTEXT://192.168.50.4:9092
...

python 脚本在主机上工作,但来宾的生产者和消费者 sh 文件不工作:

[2021-02-09 07:20:36,958] WARN [Producer clientId=console-producer] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

不知道有什么方法可以同时保持来自来宾和主机的工作连接。并不是因为缺乏搜索和分析。

Listeners 是一个绑定地址。需要为 0.0.0.0:(port) 才能向所有客户端打开服务器。设置为 localhost 限制到那台机器,设置到 ip 限制到那台 interface/route

这里最简单的解决方案是通告本地主机:(端口),然后在 Vagrant 中设置端口转发,从通告的端口到侦听器配置中指定的端口(这些可以是不同的端口)

您的第一个错误是因为您的主机不知道 VM 主机名,除非您安装了一些 Vagrant 插件。

更合适的解决方案是公布 VM host-only IP 地址