Kafka Connect ACL配置失效:任务超时失败排查求助
排查Kafka Connect + Debezium 任务超时(元数据请求取消)问题
1. 先验证网络与Broker连通性
- 登录Kafka Connect所在机器,用
kcat或Kafka自带工具测试和Broker的SASL连接:
如果连不上,先解决网络问题:检查防火墙是否开放Broker端口、kcat -b <broker-ip>:<port> -L -X security.protocol=SASL_PLAINTEXT -X sasl.mechanism=PLAIN -X sasl.username=<connect账号> -X sasl.password=<connect密码>bootstrap.servers配置的地址是否正确(别用localhost,除非Connect和Broker在同一机器)。
2. 核对SASL/ACL权限配置
- 确保Connect账号有以下ACL权限:
- 对
connect-configs、connect-offsets、connect-status三个内部主题的READ+WRITE权限 - 对Debezium要生成的主题的
CREATE+WRITE权限 - 对Broker的
DESCRIBE+DESCRIBE_CONFIGS权限(元数据请求必须)
- 对
- 用Kafka工具验证权限:
(sasl配置文件要包含SASL_PLAINTEXT的认证参数)kafka-acls.sh --bootstrap-server <broker-ip>:<port> --command-config <sasl配置文件路径> --list --principal User:<connect账号> - 检查Broker的
server.properties:确认authorizer.class.name是kafka.security.authorizer.AclAuthorizer,allow.everyone.if.no.acl.found设为false(如果开了严格ACL)。
3. 调整超时相关参数
- 日志里的元数据请求超时,说明Connect和Broker之间响应慢,修改
connect-distributed.properties:request.timeout.ms:从默认30000调大到60000metadata.max.age.ms:从300000调小到60000,让Connect更频繁刷新元数据retry.backoff.ms:从100调大到500,增加重试间隔
- 同时检查Broker的
server.properties,确保replica.lag.time.max.ms、socket.request.max.bytes等参数不会限制请求。
4. 检查Debezium MySQL连接器的配置
- 确认
database.hostname、database.port、database.user、database.password正确,且MySQL能被Connect机器访问 - 检查MySQL的
binlog_format是ROW,binlog_row_image设为FULL,这是Debezium的硬性要求 - 确保MySQL账号有
RELOAD、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT权限,以及同步表的SELECT权限 - 如果连接器设了
topic.prefix,确认Connect账号对该前缀的主题有创建权限
5. 深挖日志找细节
- 看Broker端日志,有没有Connect账号认证失败、权限被拒的记录,这会直接中断元数据请求
- 把Connect的日志级别调到DEBUG(修改
log4j.properties,将org.apache.kafka设为DEBUG),看元数据请求的详细过程,定位具体失败点
内容的提问来源于stack exchange,提问作者Sahil
相关产品推荐
相关产品推荐

