windows宿主机消费Linux虚拟机kafka集群报异常WARN Connection to node 0 could not be established. Broker may not be available
配置如下:
1、Linux
kafka_2.11-0.11.0.2 集群三台机子分别配置:
server.properties配置
advertised.listeners=PLAINTEXT://10.0.2.5:9092
advertised.listeners=PLAINTEXT://10.0.2.6:9092
advertised.listeners=PLAINTEXT://10.0.2.7:9092
2、Linux hosts配置
10.0.2.5 hadoop01.richstone.com
3、Linux nginx配置
stream {
upstream brokers {
server 10.0.2.5:9092 weight=1;
server 10.0.2.6:9092 weight=1;
server 10.0.2.7:9092 weight=1;
}
server {
listen 18001;
proxy_pass brokers;
}
}
4、虚拟机nat端口转发
10.0.2.5:18001 转发到宿主机127.0.0.1:18001
5、windows宿主机配置hosts配置
127.0.0.1 hadoop01.richstone.com
6、测试windows宿主机:
Telnet 127.0.0.1:18001 可以ping通
7、windows消费数据:
.\bin\windows\kafka-console-consumer.bat --topic first --bootstrap-server hadoop01.richstone.com:18001 --from-beginning
但是上面消费数据的时候报异常
WARN Connection to node 0 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
重点是,你宿主机消费者获取到的集群地址是
10.0.2.5:9092 10.0.2.6:9092 10.0.2.7:9092
你在往后推吧。
大兄弟,评论咱俩交流的重点你在看看,文章重点注意一下:https://www.orchome.com/1903
我看了很多遍了,我这个跟文章那个网络场景打不太一样。虚拟机里面的是nat软转发,没真实的路由,你说直接访问的那种方式是虚拟机用桥接模式,可以真实分配三个ip所以能直接访问,但是我这里配置的是nat网络,软转发。三台机子转发出去的ip(10.0.2.5,10.0.2.6,10.0.2.7),对应宿主机只有一个ip(127.0.0.1:端口),通过端口来访问对应的虚拟机。
Linux nginx配置的问题。
1、端口不能共用
2、每个转发对应一个broker。
楼主,我的情况和你类似,我的NAT只有一个,网络环境是这样的:
natip:9092-->kafka1.a.com:9092;
natip:9093-->kafka1.b.com:9092;
natip:9094-->kafka1.a.com:9092;
按照上面的配置其实也是不行的。不知道这种单IP是不是不可行还是说配置方法不对。
端口不能共用,每个转发对应一个端口。
natip:9092-->kafka1.a.com:9092;
natip:9093-->kafka1.b.com:9092;
natip:9094-->kafka1.c.com:9092;
运维把网络开成这样了。端口不能共用,能详细说明下么,谢谢。
比如kafka集群是3个:
1、客户端向kafka集群获取到这3个地址
2、建立双向通道,要分别和这3个节点建立长连接
kafka的数据是分布在这3个节点上,这3个地址必须能映射到真实的一一对应的。不能是转发到其中一台就可以的。
意思我这种情况是集群中kafka节点都映射到同一台NAT上了,尽管端口不一样,其实也是不行的么。也就是集群中每个kafka节点都必须映射不同nat上,是么。不太懂,不知理解的对不对。
你看看这篇文章之后,重新提交一个问题吧,把你具体的架构描述一下:kafka外网转发
你的答案