listeners、advertised.listeners和listener.security.protocol.map这三个配置对于kafka的安全至关重要。
1.配置简介
这三个配置都是broker端参数,用于配置kafka对外监听方式和定义对客户端连接地址。
1.1.listeners
kafka-3.6.0版本官网介绍如下图所示:
主要是定义了kafka服务socket的bind host、bind port、网路通信协议。
1.2.advertised.listeners
kafka-3.6.0版本官网介绍如下图所示:
主要是配置客户端连接kafka集群的连接方式,连接串信息会被注册到zookeeper上。
1.3.listener.security.protocol.map
kafka-3.6.0版本官网介绍如下图所示:
默认值为:PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
2.使用场景
这几个参数相互配合,可以实现不同的场景,满足可会对安全的需求。
2.1.支持IPV4和IPV6双栈监听同一端口
这是kafka-3.6.0版本开始支持的新特性,
feature说明在https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=195726330
kafka-3.6.0版本之后,我们可以在同一个端口支持双栈。相对于kafka-client来说,既可以通过IPV4地址连接kafka,也可以通过IPV6地址连接kafka。
kafka-3.6.0版本之前,如果要支持双栈,则需要设置两个端口,一个监听在IPV4协议栈,另一个监听IPV6协议栈。
2.2.配置kafka纯内网访问
部署kafka集群时,如果listeners和advertised.listeners配置的是内网IP,则可以屏蔽外网的访问,kafka集群只能通过内网地址访问。
公司内网的kafka集群通常是这样配置的。
2.3.kafka访问隔离
每个kafka节点所在服务器都可以配置内网和外网的网卡,通常通过两个listener来对接不同的网卡ip,这样可以对内网和外网的kafka访问流量进行隔离。