我正在运行由3个节点组成的Kafka群集。其中一个节点崩溃了,从那以后它一直表现出奇怪的...
以下内容不会在故障节点上返回任何内容:
kafka-topics.sh --describe --zookeeper mynode01:2181
但是,查询其他节点上的主题返回预期的主题。
我看到的另一件事是Zookeeper似乎缺少一些目录:
./zkCli.sh -server mynode01
[zk: localhost:2181(CONNECTED) 1] ls /
[controller, zookeeper]
,如果我检查任何其他节点,它都会带回:
[zk: localhost:2181(CONNECTED) 0] ls /
[isr_change_notification, zookeeper, admin, consumers, config, controller, brokers]
日志报告以下条目:
Error for partition [myqueue-1,0] to broker 1:org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition. (kafka.server.ReplicaFetcherThread)
我已经尝试了几件事来解决这个问题,没有欢乐:
- 重新启动kafka群集,以便其他节点成为领导者。
- 为受运行的主题分配不同的主题。
- 在受影响的节点上停止Kafka和Zookeeper Services,删除Kafka-Logs和Zkdata,然后恢复。
尽管群集似乎能够将此节点视为其他任何一个,并切换了没有问题的领导者/追随者的角色……看起来它在某个时候失去了同步,无法恢复自身。
有什么想法吗?
预先感谢
我能够通过在受影响的节点中停止Zookeeper和Kafka服务来解决问题,并删除ZKDATA中可用的快照以及ZKLOG目录中可用的相关事务日志。
启动Zookeeper在受影响的节点上返回后,丢失的Znodes被重新同步。