kafka内外网映射地址如何配置

随枫而弑 发表于: 2019-09-30   最后更新时间: 2019-10-01 17:33:54   5,027 游览

kafka版本:kafka_2.12-2.3.0
网络环境:内网IP:9092 映射到 外网IP:7039

有个重点是我的外网地址是无法在本地解析的,即在本地只能用内网地址访问kafka

我现在想要在内网能用内网地址访问kafka,在外网能用外网地址访问kafka
以下是我失败的尝试:

1、只配置listeners

listeners=PLAINTEXT://内网IP:9092

内网可以访问,外网报错:

ERROR Error when sending message to topic Hello with key: null, value: 3 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Topic Hello not present in metadata after 60000 ms.

2、配置了listenersadvertised.listeners

listeners=PLAINTEXT://内网IP:9092
advertised.listeners=PLAINTEXT://外网IP:7039

内网和外网访问都报错:

WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 11 : {Hello=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

3、网上找到的一个配置:

listeners=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:7039
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
advertised.listeners=INTERNAL://内网IP:9092,EXTERNAL://外网IP:7039
inter.broker.listener.name=INTERNAL

内网可以访问,外网报错:

ERROR Error when sending message to topic Hello with key: null, value: 3 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Topic Hello not present in metadata after 60000 ms.
发表于 2019-09-30

最后还是通过域名映射来解决这个问题,把内外网端口映射一样,然后配置listeners=PLAINTEXT://hostname:9092,修改内网hosts文件为内网地址,修改外网hosts文件为外网地址,就可以内外网都能访问到了

看看这篇文章能解决你的问题不
https://www.orchome.com/1903

随枫而弑 -> 半兽人 4年前

这篇我看过了,但我的内外网端口不同,无法使用hosts配置啊

你的答案

查看kafka相关的其他问题或提一个您自己的问题