博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kafka跨网闸,使用映射地址无法连接
阅读量:4205 次
发布时间:2019-05-26

本文共 1454 字,大约阅读时间需要 4 分钟。

作者:半兽人

链接:https://www.orchome.com/1903

很多人都因为配置 kafka 外网转发而困扰,我这里统一讲一下原理和原因。

场景假设

比如你有一个 kafka 集群,在阿里云上,该集群有 2 个 broker,A 和 B。

kafka 集群:

A 内网:172.10.0.2 外网:10.0.21.1

B 内网:172.10.0.1 外网:10.0.21.2
server.properties 配置

config/server-1.properties:

broker.id=1
listeners=PLAINTEXT://172.10.0.1:9092

config/server-2.properties:

broker.id=2
listeners=PLAINTEXT://172.10.0.2:9092
复制
配置内网地址即可,就可以通过外网访问了(10.0.21.1:9092 和 10.0.21.2:9092 可以通,但是如果用 kafka 客户端连接会报超时)
你想通过你的电脑来访问 kafka 集群,也就想访问 10.0.21.1:9092 和 10.0.21.2:9092:

注意,我额外加一层场景,转发,复杂一点,但是原理相同。

路由转发,比如:

11.10.21.1 -> 10.0.21.1

11.10.21.2 -> 10.0.21.2
复制
11.10.21.x 为又加了一层转发 ip
测试
这时,如果你通过 11.10.21.1:9092 和 11.10.21.2 端口都是通的,但是访问 kafka 发送或消费消息时,会报网络超时,这是为什么呢?

问题分析

因为 kafka 客户端是主动发现集群地址的,当你通过 11.10.21.1:9092 确实是连接到 kafka 集群了,kafka 集群返回给你的 ip 列表是你 listeners 配置的,也就是

172.10.0.1:9092

172.10.0.2:9092
复制
你的 ip 转发和端口都没有用,这就是所有转发外网等等的本质原因。

解决

最简单的方式是客户端通过域名映射的方式。

修改 kafka 集群服务端的 server.properties 配置

config/server-1.properties:

broker.id=1
listeners=PLAINTEXT://kafka-1:9092

config/server-2.properties:

broker.id=2
listeners=PLAINTEXT://kafka2:9092
复制
kafka 集群的服务端,配置 hosts

cat /etc/hosts

172.10.0.1 kafka-1
172.10.0.2 kafka-2
复制
本机客户端,配置 hosts

cat /etc/hosts

11.10.21.1 kafka-1
11.10.21.2 kafka-2
复制
客户端访问 kafka 集群时,获取的是 kafka-1:9092 和 kafka-2:9092,通过客户端配置的 hosts 映射,都转成了对应的外网的 ip,因此就可以访问了。

注意:端口要一致,hosts 映射只转 ip。

如果需要修改端口

端口也映射,未实验正确性:

ip 一样端口不一样就写成 172.10.0.1 kafka-1 kafka2 11.10.21.1 kafka-1 kafka-2 就好了。

转载地址:http://iytli.baihongyu.com/

你可能感兴趣的文章
Log4j经验谈
查看>>
Struts的安装与基本配置
查看>>
中文字符乱码的原因及解决办法-java乱码原因我所见过最言简意赅的说明
查看>>
Spring Web Flow 1.0 EA版发布
查看>>
javascript正确计算小数(保留两位小数,多位小数)
查看>>
中小团队开发模式的特点和目前普遍存在的一些问题
查看>>
Linux不是Windows
查看>>
介绍一篇关于session的好文章,写的很详细(jsp-servlet 技术)
查看>>
[转自php中国]PHP编码规范
查看>>
再谈java中文问题(转自jdon,推荐)
查看>>
struts资源更新
查看>>
你应该关注的:HTML 的未来,第 2 部分: XHTML 2.0
查看>>
jbuilder部分IDE问题解决方案
查看>>
推荐一个在线代理
查看>>
struts配置文件讲解:web.xml和struts-config.xml
查看>>
基于JDBC的数据库连接池技术研究与应用
查看>>
你正在使用Struts么?那么你应该关注Shale
查看>>
Java读取Excel的两种方式方式介绍
查看>>
JSP彩色验证码
查看>>
JSP生成彩色验证码升级版-汉字验证码(源码下载)
查看>>