背景
之前参与过一个政务专有云项目,该项目服务需部署在政务专区,但是却和外网kafka有通信,需要消费topic消息,但是由于政务专区网络访问外网都是通过代理网关出去的,kafka与外部通信时也走的这种网络策略,最后却无法正常通信。
问题排查过程
在10.1.x.x 通过 172.x.x.x 转发tcp包不行,通过抓包找到原因了,执行下面命令:
./bin/kafka-console-consumer.sh --bootstrap-server 172.x.x.x:19092 --topic opc-sync-zoneId-53-namespace --from-beginning
在10.1.x.x 上抓的包。
对比下发现这个kafka工具开始用代理通信,后面还是点对点了, 172网段可以访问互联网所以能成功获取kafka的数据, 10网段不能访问互联网最后还是不行。
中间有个包会把kafka的源ip给传过回来给10.1.x.x,看起来就是是这一步后又直接和源kafka通信了。
总结
在与kafka建立连接后,注册中心会给一个源服务端的IP,而这个IP会直接返回给客户端发起,客户端不会再向代理机通信,而会直接访问远程IP,所以代理方式也搞不定。