背景
和第三方公司进行数据集成,因为第三方服务和我们不是部署在一个数据中心,所以需要给第三方的程序开放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 实现内外网访问流量分离