
Kafka3.8-Kraft模式开启ACL访问慢问题
AI-摘要
切换
Tianli GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
该问题是在生产环境下碰到的问题,问题现象就是Kafka客户端在连接Kafka服务时特别慢,通常需要60秒左右才能连接上,连接上后经常出现客户端断开的现象。
部署配置:
version: '3.8'
services:
kafka:
image: bitnami/kafka:3.8
container_name: "kafka"
restart: always
environment:
# Kafka 同时作为 broker 和 controller 运行
- KAFKA_CFG_PROCESS_ROLES=broker,controller
# 节点 ID,必须唯一标识该节点
- KAFKA_CFG_NODE_ID=1
# 配置 controller 节点,用于管理集群元数据,监听端口为 9093
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
# Kafka 各种协议的监听配置
# SASL_PLAINTEXT:用于 broker 与客户端通信的协议,端口为 9092
# CONTROLLER:用于 controller 间的通信,端口为 9093,采用 PLAINTEXT 协议
- KAFKA_CFG_LISTENERS=SASL_PLAINTEXT://kafka:9092,CONTROLLER://kafka:9093
# 告诉 Kafka CONTROLLER 使用哪个监听器
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
# Kafka 向客户端公布的监听地址,这里监听的是 SASL_PLAINTEXT 协议的 broker
- KAFKA_CFG_ADVERTISED_LISTENERS=SASL_PLAINTEXT://192.168.11.112:9092
# Kafka broker 间通信时使用 SASL_PLAINTEXT 协议
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=SASL_PLAINTEXT
# 定义各监听器的安全协议,SASL_PLAINTEXT 用于 broker,PLAINTEXT 用于 controller
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=SASL_PLAINTEXT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT
# 启用的 SASL 认证机制,这里使用 PLAIN 认证
- KAFKA_CFG_SASL_ENABLED_MECHANISMS=SCRAM-SHA-256
# 设置 broker 间通信的 SASL 认证机制,使用 PLAIN
- KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=SCRAM-SHA-256
# 启用 ACL 权限控制,通过 SimpleAclAuthorizer 实现
# zk模式 kafka.security.authorizer.AclAuthorizer
# kraft模式 org.apache.kafka.metadata.authorizer.StandardAuthorizer
- KAFKA_CFG_AUTHORIZER_CLASS_NAME=org.apache.kafka.metadata.authorizer.StandardAuthorizer
# 禁止无 ACL 规则时默认允许所有用户访问
- KAFKA_CFG_ALLOW_EVERYONE_IF_NO_ACL_FOUND=true
# 设置 Kafka 的超级用户(具有所有资源的完全访问权限)
# User:Bob;User:Alice
- KAFKA_CFG_SUPER_USERS=User:admin
#配置controller用户信息
- KAFKA_CONTROLLER_USER=admin
- KAFKA_CONTROLLER_PASSWORD=admin@2024
# 配置 broker 的 SASL JAAS 认证信息
- KAFKA_INTER_BROKER_USER=admin
- KAFKA_INTER_BROKER_PASSWORD=admin@2024
# - KAFKA_CLIENT_USERS=junpzx,test
# - KAFKA_CLIENT_PASSWORDS=junpzx@2024,test@2024
# 配置 Kafka 数据存储目录,挂载到容器外部
- KAFKA_CFG_LOG_DIRS=/bitnami/kafka/data
- KAFKA_CFG_METADATA_LOG_DIR=/bitnami/kafka/metadata/
# KAFKA消息大小限制
- KAFKA_MESSAGE_MAX_BYTES=10000000
ports:
# 映射 Kafka 的 broker 端口 (SASL_PLAINTEXT://kafka:9092) 到宿主机的 9092 端口
- "9092:9092"
# 挂载卷,将 Kafka 数据目录映射到宿主机的 ./kafka-data 目录
volumes:
- ./workspace/kafka:/bitnami/kafka
# 服务名
kafka-console-ui:
image: "junpzx/kafka-console-ui:1.0.11"
container_name: "kafka-console-ui"
restart: always
ports:
- "7766:7766"
volumes:
- ./workspace/kafka-console-ui/data:/app/data
- ./workspace/kafka-console-ui/log:/app/log
privileged: true
该问题主要是因为直接使用了IP来配置外部客户端的访问地址,可能是因为该配置导致DNS解析问题,所以导致特别慢
解决方法就是外部不直接使用IP访问而是通过域名的方式进行访问,改造后的配置:
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 星辰大海-Secret丶君
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果