问题描述
某据点演示环境,用代码自动创建topic及kafka-console-consumer.sh手动创建topic,用kafka-topic.sh查看topic详细信息时,leader列显示为none,且SIR列显示为空。如图所示:
解决过程
1、首先想到的是zookeeper /controller目录下是否有值,controller在选举partition leader有重要作用。如下图所示:
2、/brokers/topic/topic名,检查该目录的权限,执行结果显示如下:
3、根据topic partition leader选举过程来说,不应该会出现该问题,只能让现场同事去停掉kafka服务,并且手动清空zookeeper中和kafka相关的一些节点,相关的节点如下所示:
- /consumers—消费者、消费者组信息
- /admin—删除的topic
- /config—配置信息
- /controller—控制节点的broker.id(没有ip信息有点遗憾)
- /brokers—集群几点信息,topic信息
- /controller_epoch—集群经过了多少次controller选取
手把手教现场运维清理的时候,出现一个现象,让我有了灵感:/controller目录,同事反馈说清除不掉,我第一反应是不可能啊~然后他说确定删除不了。然后我叫他查看一下/controller节点的值。最终,我发现他还有一台机器用这个zookeeper,导致该节点删了又立马创建。
4、我让他修改一下另外一个kafka集群server.properties文件中的zookeeper.connect,让这两个kafka集群写zookeeper的路径不一样。
5、最终,重启了kafka集群之后,可以正常的创建topic,并使用。
如果对你有帮助,关注一下公众号吧~