You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka Connect ACL配置失效:任务超时失败排查求助

排查Kafka Connect + Debezium 任务超时(元数据请求取消)问题

1. 先验证网络与Broker连通性

  • 登录Kafka Connect所在机器,用kcat或Kafka自带工具测试和Broker的SASL连接:
    kcat -b <broker-ip>:<port> -L -X security.protocol=SASL_PLAINTEXT -X sasl.mechanism=PLAIN -X sasl.username=<connect账号> -X sasl.password=<connect密码>
    
    如果连不上,先解决网络问题:检查防火墙是否开放Broker端口、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工具验证权限:
    kafka-acls.sh --bootstrap-server <broker-ip>:<port> --command-config <sasl配置文件路径> --list --principal User:<connect账号>
    
    (sasl配置文件要包含SASL_PLAINTEXT的认证参数)
  • 检查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调大到60000
    • metadata.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:07:58