一、项目背景
业务提了个需求,需要实时拿总部系统数据,结合本部数据做成标签数据,用来分析。本来是有两种方案的,第一种总部把实时数据推给我们,第二种是他们推到自己的实时集群kafka上,我们去消费。领导们讨论出来的方案是用第二种,为啥,咱也不好问。。然后我们这边决定用flink实时消费他们的kafka数据,写到我们自己集群的kafka上。。。
二、问题描述
因为总部kafka在他们的内网,不会直接开墙让我们连,他们那边做了一层网络nat,把nat后的一段ip开了墙让我们访问。上线之前是验证过的,网络是通的,但是真正起应用的时候,一直连接不上,具体错误如下:
org.apache.kafka.clients.consumer.internals.AbstractCoordinator [consumer clientId=...,groupid=...] connection to node 192.168...:9092 could not be established. Broker may not be available.
这时就发现你配置的 bootstrap.servers地址是nat后的,但是报错的却是nat之前的原地址。因为没开墙,导致真正读数据的时候一直连不上。
简单的说下网络图:
总部kafka原地址(有墙) NAT后地址(开墙了) 本部flink
ip1 -------------------------------------> n_ip1 -------------------------------------> yarn
ip2 -------------------------------------> n_ip2 -------------------------------------> yarn
ip3 -------------------------------------> n_ip3 -------------------------------------&g

本文介绍了一种跨网段环境下Kafka数据读取遇到的问题及其解决方案。通过对Kafka源码进行局部修改的方式,实现了从NAT转换后的地址成功获取数据,解决了因网络限制导致的数据读取失败问题。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



