博客 Kafka如何配置内外网多ip访问

Kafka如何配置内外网多ip访问

   数栈君   发表于 2023-09-04 10:22  336  0

近日在云虚拟机上搭建kafka测试集群(kafka版本2.8.2),由于云虚拟机只配置了内网网卡,在配置kafka的config/server.properties时,将listeners配置为内网IP+端口。这样Kafka在内网是可以访问成功的。

listeners=PLAINTEXT://192.168.1.136:9092
为了可以在办公网进行数据测试,对云虚拟机增加了外网地址映射。例如映射8.8.8.8 ->192.168.1.136 。这时通过外网ip,8.8.8.8:9092访问kafka,虽然路由上是可以连通的,但由于配置了Kafka只监听192.168.1.136:9092,导致要求无法正常建立连接。这时请求会报tcp time out/ connect time out.
为了实现可能用外网映射ip访问kafka,需要更新kafka的配置。我们知道Kafka涉及服务IP端口监听的主要有两个配置:advertised.listeners和listeners。
advertised.listeners是发布到zookeeper上供client使用的IP端口。假设我们一个3节点Kafka集群。分别配置为

#broker1
advertised.listeners=PLAINTEXT://192.168.1.136:9092
#broker2
advertised.listeners=PLAINTEXT://192.168.1.137:9092
#broker3
advertised.listeners=PLAINTEXT://192.168.1.138:9092

这里zookeeper上保存的信息为

{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.1.136:9092"],"jmx_port":-1,"features":{},"host":"192.168.1.136","timestamp":"1679317596175","port":9092,"version":5}

zk中的endpoints就是advertised.listeners上配置的IP端口。我们通过一个192.168.1.136:9092地址访问kafka,client会通过协议查询到所有的broker-endpoints,然后通过endpoint能broker进行访问。
配置中,PLAINTEXT://192.168.1.136:9092,PLAINTEXT是服务命名,一个服务命名,对应一个服务协议。一般情况下使用的是默认的命名协议映射,使用listener.security.protocol.map进行配置。默认值是

listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

为了实现内外网访问,我们定义两种访问服务INTERNAL(内网),EXTERNAL(外网)。内外网配置的协议都是PLAINTEXT。

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

然后配置client使用的advertised.listeners

advertised.listeners=INTERNAL://192.168.1.136:9092,EXTERNAL://8..8.8.8:19092

再配置kafka内服务使用的listeners

listeners=INTERNAL://192.168.1.136:9092,EXTERNAL://192.168.1.136:19092

指定broker间使用的协议为

inter.broker.listener.name=INTERNAL

这样就可以实现区分内外网ip访问kafka服务。





免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群