前言
话说Pulsar势头猛进、发展如火如荼啊,未来很可能撼动Kafka霸主地位。但是,当前生产环境中Kafka的使用率还是极高的。纵然笔者有心想深度体验下Pulsar,奈何太多客户不买账啊,还是痴迷于继续用Kafka,被迫营业太难了,哈哈。最近有几个新局点陆续有Kafka直接部署在公网的需求。有朋友用nginx代理Kafka集群,这种方案笔者感觉太小众,不如所有broker节点共用一个公网ip、然后分别使用不同公网端口(毕竟公网ip资源紧张啊),故有此文。本文主要探究Kafka三种网络配置方案:内网配置、外网配置、内外网分离配置。注:sasl权限认证及ssl加密暂不在本文讨论范围(如果环境未开启认证,下列配置直接使用PLAINTEXT)。
内网配置
内网使用是最普通、最常规的使用方法。配置个listeners就行,如:
listeners = PLAINTEXT://your.host.name:9092
外网配置
除了listeners外,需要新加个配置advertised.listeners。
listeners=SASL_SSL://内网IP:内网端口advertised.listeners=SASL_SSL://外网IP:外网端口
以上配置后,如果外网还访问不了,绝逼是防火墙或路由映射上有问题。
注:1)如果Kafka节点不能访问公网,这种配置会造成内网不能使用Kafka。2)如果通过ambari部署HDP集群,注意python脚本后台搞的小动作,比如开了kerberos的场景,后台脚本强制将listeners的值赋值给advertised.listeners(这一点比较坑)。原生Kafka的默认行为是,如果用户不显式配置advertised.listeners,该值默认赋值为listeners。
内外网分离配置
内外网分离配置,顾名思义,就是同时支持通过内网和外网访问Kafka。内网走内网、外网走外网,相互分离、互不影响。
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SASL_SSLlisteners=INTERNAL://192.168.1.11:9092,EXTERNAL://192.168.1.11:9093advertised.listeners=INTERNAL://192.168.1.11:9092,EXTERNAL://<公网ip>:<公网端口>inter.broker.listener.name=INTERNAL
说明:192.168.1.11为内网ip,9092为内网端口
公网ip端口映射到内网ip的9093端口
(建议可以同名映射,如公网端口50000映射到内网端口50000)
注意:Kafka 2.3.0以后版本中存在配置冲突
Only one of inter.broker.listener.name andsecurity.inter.broker.protocol should be set
原创不易、欢迎点赞、转发、收藏、关注!!




