【Kafka】Kafka的复杂SASL用法

上一篇文章中介绍了Kafka的SASL配置和SSL配置,其中SASL我们是只配了一个地址,但是在很多大型公司中,往往会使用更复杂一点的配置,来完成内外网通信的部署。
本篇主要设计到以下内容:
1.listener name的使用方法
2.listener涉及内外网访问的配置

1.listener name配置说明

Kafka 支持PLAINTEXT,SSL,SASL_PLAINTEXT,``SASL_SSL四种安全协议(不区分大小写),且通过listeners配置,可以同时监听多个端口listeners配置项通过逗号,分割来指定多个listener。每个listener可以使用不同的安全协议。listeners中的每个listener配置格式为:

{LISTENER_NAME}://{hostname}:{port}

LISTENER_NAME通常是一个描述性名称,用于定义listener的目的。通常有两种常规用法:

1.1 客户端和Broker端使用不同Listener

例如,许多配置为客户端流量使用单独的listener,因此可能在配置中将相应的LISTENER_NAMECLIENT

listeners= CLIENT://localhost:9092,BROKER://:9093

每个listener使用的安全协议在配置项listener.security.protocol.map中指定。例如来自客户端的通信使用SSL,broker相互之间的通信使用PLIANTEXT,则配置如下

listener.security.protocol.map = CLIENT:SSL,BROKER:PLAINTEXT
# Broker之间的连接用 BROKER监听器
inter.broker.listener.name=BROKER

1.2 提供不同安全协议的Listener

如果每个listener单独使用不同的安全协议,则可以直接使用安全协议作为LISTENER_NAME。例如

listeners= SSL://localhost:9092,PLAINTEXT://localhost:9093
#以下两项都是默认配置
#inter.broker.listener.name=PLAINTEXT
#security.inter.broker.protocol=PLAINTEXT

在上述例子中,可以通过inter.broker.listener.name=PLAINTEXT来指定broker间的通信时使用的listener。但是该配置项并没有设置,因为inter.broker.listener.name未配置时会使用security.inter.broker.protocol来指定broker使用的listener,不过该配置项的默认值为PLAINTEXT,所以也没有进行配置。

1.3 关于ListenerName的建议

配置多个listener时,建议配置listenerLISTENER_NAME,可以明确的描述listener的作用。

2.listener涉及内外网访问的配置

2.1 Broker和客户端均在内网访问

当你的broker和客户端都在一个内部局域网的时候,所有的请求都是通过内部网络可达。只需要配置一个内网网址即可。

listeners=PLAINTEXT://内网ip:端口

2.2 Broker和客户端都可以进行外网访问

2.2.1 有外网网卡

这种场景比较少,当你的broker都有外网网卡的时候,所有请求都可以走外网抵达,可以进行如下配置即可:

listeners=PLAINTEXT://外网ip:端口

2.2.2 没有外网网卡

很多时候,我们都不会直接提供外网网卡而是通过其他入口转发到内部,比如你的客户端需要从外网访问broker时,可以进行如下配置:

listeners=PLAINTEXT://内网ip:端口1
advertised.listeners=PLAINTEXT://外网ip:端口1

可以使用相同的端口号,advertised.listeners是提供给客户端拿到的地址,当客户端从外网往返该端口时,请求会被转发到内部网络的地址中去。

2.3 Broker和客户端的访问同时有内外网

上面的配置我们可以实现内外网的访问,但是在内外网我们很多时候希望使用不同的安全策略,这种时候前面的方式就很难实现。我们可以将lisenerName划分为内网和外网,选取不同的安全策略。

2.3.1 有外网网卡

当我们的机器本身有外网网卡的情况下,我们可以如下配置:

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://内网ip:端口1,EXTERNAL://外网ip:端口2
advertised.listeners=INTERNAL://内网ip:端口1,EXTERNAL://外网ip:端口2
inter.broker.listener.name=INTERNAL

2.3.2 没有外网网卡

没有外网网卡的情况,我们就需要配置将外网的ip转发到内网:

listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://内网ip:端口1,EXTERNAL://内网ip2:端口2
advertised.listeners=INTERNAL://内网ip:端口1,EXTERNAL://外网ip:端口2
inter.broker.listener.name=INTERNAL
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值