Kafka配置如何支持多种协议
导读:Kafka配置支持多种协议的关键参数与实践 Kafka通过**多监听器(Listeners)**机制支持多种协议(如PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL等),允许客户端、Broker间根据场景选择不同协...
Kafka配置支持多种协议的关键参数与实践
Kafka通过**多监听器(Listeners)**机制支持多种协议(如PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL等),允许客户端、Broker间根据场景选择不同协议(如内网用明文、外网用加密)。以下是核心配置及实践说明:
1. 核心配置参数解析
1.1 listeners
- 作用:定义Broker监听的网络接口、端口及对应协议,格式为
协议名称://主机名:端口
,多个监听器用逗号分隔。 - 示例:
listeners=INTERNAL://192.168.1.100:9092,EXTERNAL://10.0.0.100:9093
(内网用INTERNAL协议,外网用EXTERNAL协议)。 - 注意:主机名需为Broker可访问的地址(如内网IP、公网IP),避免使用
0.0.0.0
(可能导致客户端无法解析)。
1.2 advertised.listeners
- 作用:向客户端和集群其他Broker发布Broker的可访问地址(需包含协议、主机名、端口),解决NAT或跨网络环境下的连接问题。
- 示例:
advertised.listeners=INTERNAL://kafka-internal:9092,EXTERNAL://kafka.example.com:9093
(客户端通过kafka.example.com:9093
访问外网,通过kafka-internal:9092
访问内网)。 - 注意:若未配置,Kafka会默认使用
listeners
的值,但advertised.listeners
不支持0.0.0.0
。
1.3 listener.security.protocol.map
- 作用:为每个自定义监听器协议映射底层安全协议(如SSL、SASL_PLAINTEXT等),必填项(自定义协议必须配置)。
- 示例:
listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SSL
(INTERNAL监听器使用SASL+明文认证,EXTERNAL监听器使用SSL加密)。 - 常见安全协议:
PLAINTEXT
(明文,不安全)、SSL
(加密,无认证)、SASL_PLAINTEXT
(SASL认证+明文)、SASL_SSL
(SASL认证+加密)。
1.4 inter.broker.listener.name
- 作用:指定Broker间通信使用的监听器名称(需在
listeners
中定义),确保集群内部通信的安全性和隔离性。 - 示例:
inter.broker.listener.name=INTERNAL
(Broker间通过INTERNAL监听器通信,使用SASL_PLAINTEXT协议)。
2. 常见场景配置示例
2.1 单机多协议(开发测试)
- 需求:同一台机器上同时支持内网和外网访问,内网用明文,外网用SSL。
- 配置:
listeners=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9093 advertised.listeners=INTERNAL://localhost:9092,EXTERNAL://your-public-ip:9093 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SSL inter.broker.listener.name=INTERNAL
- 说明:内网客户端通过
localhost:9092
访问(明文),外网客户端通过your-public-ip:9093
访问(SSL加密)。
2.2 内外网分流(生产环境)
- 需求:内网Broker间用明文通信,外网客户端用SSL加密访问。
- 配置:
listeners=INTERNAL://192.168.1.100:9092,EXTERNAL://10.0.0.100:9093 advertised.listeners=INTERNAL://kafka-internal:9092,EXTERNAL://kafka.example.com:9093 listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:SSL inter.broker.listener.name=INTERNAL
- 说明:Broker间通过内网IP(192.168.1.100:9092)通信(明文),外网客户端通过公网域名(kafka.example.com:9093)访问(SSL加密)。
3. 注意事项
- 协议一致性:
listener.security.protocol.map
中的协议必须与listeners
中的自定义协议一一对应,否则会报错(如No security protocol defined for listener XXX
)。 - 主机名合法性:
advertised.listeners
中的主机名需能被客户端解析(如通过DNS或hosts文件),避免使用localhost
或0.0.0.0
。 - 安全协议选择:生产环境建议使用
SASL_SSL
(认证+加密),避免敏感数据泄露。 - 配置生效:修改
server.properties
后需重启Kafka服务,可通过kafka-configs.sh
动态调整部分参数(如listeners
)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kafka配置如何支持多种协议
本文地址: https://pptw.com/jishu/718199.html