我有3个节点的kafka群集。当节点#3死亡时,我的_schemas主题停止正常运行,并且看到以下内容:
kafka-topics --zookeeper localhost:2181 --topic _schemas --describe
Topic:_schemas PartitionCount:1 ReplicationFactor:2 Configs:cleanup.policy=compact
Topic: _schemas Partition: 0 Leader: -1 Replicas: 3,2 Isr: 2
Run Code Online (Sandbox Code Playgroud)
因此,似乎节点#3已死,这就是Leader: -1所指的。但是,为什么Kafka不能继续像往常一样继续工作,分配Node #2为新的领导者并将数据复制到,#1以便我们有2个同步副本?
我在kafka日志中看到的错误:
kafka.common.NotAssignedReplicaException:
Leader 3 failed to record follower 2's position -1 since the replica is not
recognized to be one of the assigned replicas 3 for partition <loop over many partitions>
Run Code Online (Sandbox Code Playgroud)
Gal*_*odi -1
如果您有一个由 3 个 kafka 代理组成的集群,并且您的主题只有 1 个分区,则意味着您只有one领导者,并且您只针对该代理生成数据和工作。
如果你想让卡夫卡:
继续照常工作,指定节点 #2 作为新的领导者
您应该使用 3 个分区创建主题,每个代理将成为其他分区的领导者,如果其中一个代理发生故障,您将能够写入其他分区。
请参阅运行示例./kafka-topics.sh --zookeeper localhost:2181 --topic _schemas --describe:
Topic:_schemas PartitionCount:3 ReplicationFactor:1 Configs:retention.ms=14400000
Topic: _schemas Partition: 0 Leader: 2 Replicas: 2 Isr: 2
Topic: _schemas Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: _schemas Partition: 2 Leader: 1 Replicas: 1 Isr: 1
Run Code Online (Sandbox Code Playgroud)
在此示例中,您可以看到_schemas有 3 个分区,这意味着所有 3 个代理都是该主题的领导者,每个代理位于不同的分区上,第一个代理 2 是分区 0 上的领导者,代理 0 和代理 1 是分区 0 上的关注者。
| 归档时间: |
|
| 查看次数: |
5590 次 |
| 最近记录: |