由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

Kafka 实现内外网访问流量分离

大数据 西门飞冰 2364℃

背景

和第三方公司进行数据集成,因为第三方服务和我们不是部署在一个数据中心,所以需要给第三方的程序开放Kafka的公网访问

问题:Kafka 无法同时内外网访问

Kafka 默认只暴露出来一个地址放到zk中,用户请求Kafka的时候,会返回zk中的地址给客户端进行访问,就算做了公网映射也是如此,和第三方公司交互的时候,如果这个地址配置成内网地址则第三方公司不能访问,如果配置成公网地址,则内网程序消费Kafka的流量需要途经防火墙,是很不合理的实现方式

解决办法

修改Kafka server.properties 配置文件中的listeners和advertised.listeners,通知监听内网和外网地址即可,这样第三方的程序可以通过公网进行连接,自己数据中心的程序通过内网进行连接

# 设置监听地址:INTERNAL 为内网地址,EXTERNAL为外网地址,不写具体IP表示监听在所有IP地址上,和0.0.0.0类似
listeners=INTERNAL://:18092,OUTSIDE://:19092
# 设置宣告的地址,这个地址是注册到zookeeper中,返回给客户端调用的,同样INTERNAL 为内网地址,EXTERNAL为外网地址
advertised.listeners=INTERNAL://10.25.15.91:19092,OUTSIDE://{公网地址}:18092
# 设置服务的主机名字
advertised.host.name={服务器的主机名}
# 设置broker 之间通行使用的地址
inter.broker.listener.name=INTERNAL
# 安全协议的映射,PLAINTEXT 表示明文
listener.security.protocol.map=INTERNAL:PLAINTEXT,OUTSIDE:PLAINTEXT

 

转载请注明:西门飞冰的博客 » Kafka 实现内外网访问流量分离

喜欢 (2)or分享 (0)