nigix转发kafka 连不上
问题描述
我这边有三台服务器,A,B,C,其中A不能与C联通,只能通过B转发。
现在就是A启动了Kafka,C是spring boot开发的 消费者.但是C通过B的nigix 连不上Kafka,导致C启动报错
报错信息
2019-09-03 14:37:53 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO org.springframework.kafka.listener.KafkaMessageListenerContainer - partitions revoked: []
2019-09-03 14:37:53 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO org.apache.kafka.clients.consumer.internals.AbstractCoordinator - [Consumer clientId=consumer-1, groupId=KAFKA_GROUP_ID_ONE] (Re-)joining group
2019-09-03 14:38:14 [org.springframework.kafka.KafkaListenerEndpointContainer#0-1-C-1] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-2, groupId=KAFKA_GROUP_ID_ONE] Connection to node 2147483647 could not be established. Broker may not be available.
2019-09-03 14:38:14 [org.springframework.kafka.KafkaListenerEndpointContainer#0-5-C-1] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-6, groupId=KAFKA_GROUP_ID_ONE] Connection to node 2147483647 could not be established. Broker may not be available.
已经尝试过哪些方法仍然没解决,操作步骤等
尝试修改kafka的配置server.property文件
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://your.host.name:9092
用IP,localhost、0.0.0.0、都不行。
kafka客户端是通过连接到某个kafka集群 节点,察觉其他节点的,所以客户端获取到的就是原kafka真实IP,而不是你转换后的。
所以,你可以通过路由转发或用域名,客户端host配置好想转发的地址。
但是A和C是连不上的哦,试过改了host也不行
假设
外网Kafka服务器A机器
IP:192.168.0.58
内网代理服务器B机器
IP:192.168.1.82
内网消费者客户端C机器
IP:192.168.1.130
,其中C是不能访问A的。
1、外网A机器kafka中server.properties配置
listeners=PLAINTEXT://192.168.0.58:6379
advertised.listeners=PLAINTEXT://kf-kafka:6379
2、外网Kafka服务器A机器的hosts:
192.168.0.58 kf-kafka
3、内网消费者客户端C机器的hosts:
192.168.1.82 kf-kafka
是的,host是这么配,你把A机kafka配置文件改成
listeners=PLAINTEXT://kj-kafka:6379
advertised.listeners已经弃用了,可以删掉,在试试。
试过了,还是不行呢
报错的时候,会打印连接不上的地址。是你的域名吗。
你telnet 域名 + 6379 是OK的吗
telnet 端口是通的,我先把转发的端口和kafka端口保持一致,然后改host文件,按上面配置就好了。
好的,可以节帖了
感谢你的支持
为什么配置域名就可以了,能大致讲下原理吗?另外如果是用路由转发的话具体怎么做?
https://www.orchome.com/1903
advertised.listeners=OUTSIDE://192.168.1.16:9093,INSIDE://:9092 listener.security.protocol.map=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
这种kafka在docker上的配置方式是不是也能起到一样的效果?
你的答案