Kafka Connect分布式模式NOT_ENOUGH_REPLICAS错误排查求助
Kafka分布式Connect NOT_ENOUGH_REPLICAS 问题排查与解决
错误指向connect-configs-0分区的副本数不足,这是Kafka Connect内部主题的配置问题,和业务主题myTopic无关,核心原因及解决步骤如下:
关键问题点
你修改的offset.storage.replication.factor等worker配置参数仅在内部主题(connect-configs/connect-offsets/connect-status)首次创建时生效。如果这些主题是你之前用standalone模式启动时自动创建的,后续修改worker配置不会自动更新已存在主题的副本数。从你最后grep的worker.properties来看,当前配置值还是2,就算改成5,也不会影响已存在的内部主题。
解决步骤
- 停掉所有分布式Connect实例
- 检查内部主题状态
执行命令查看三个内部主题的副本数和ISR:
你会发现这些主题的副本数远低于5,且ISR列表不完整。kafka-topics.sh --describe --topic connect-configs --bootstrap-server <你的Kafka集群地址> kafka-topics.sh --describe --topic connect-offsets --bootstrap-server <你的Kafka集群地址> kafka-topics.sh --describe --topic connect-status --bootstrap-server <你的Kafka集群地址> - 手动扩容内部主题副本数
- 创建副本分配配置文件(比如
replication-assign.json),根据你的集群broker ID(10,11,9,42,43)编写,示例针对connect-configs(如果是多分区主题,要列出所有分区):{"version":1,"partitions":[{"topic":"connect-configs","partition":0,"replicas":[43,11,9,42,10]}]} - 执行分区重分配命令:
kafka-reassign-partitions.sh --bootstrap-server <你的Kafka地址> --reassignment-json-file replication-assign.json --execute - 重复上述操作,分别处理
connect-offsets和connect-status主题。
- 创建副本分配配置文件(比如
- 验证扩容结果
再次执行主题描述命令,确认三个内部主题的Replicas包含全部5个broker,且Isr列表与Replicas完全一致。 - 修正worker配置并重启
确保worker.properties中三个参数设置为5:
然后启动分布式Connect节点。offset.storage.replication.factor=5 config.storage.replication.factor=5 status.storage.replication.factor=5
可选优化
如果内部主题的min.insync.replicas配置和业务主题不一致,可以手动调整:
kafka-configs.sh --bootstrap-server <你的Kafka地址> --alter --topic connect-configs --add-config min.insync.replicas=2 kafka-configs.sh --bootstrap-server <你的Kafka地址> --alter --topic connect-offsets --add-config min.insync.replicas=2 kafka-configs.sh --bootstrap-server <你的Kafka地址> --alter --topic connect-status --add-config min.insync.replicas=2
内容的提问来源于stack exchange,提问作者Jin Ma
相关产品推荐
相关产品推荐

