【问题标题】:how could I do when faced with "leader=-1" error in Kafka遇到 Kafka 中的“leader=-1”错误时我该怎么办
【发布时间】:2015-12-09 08:15:58
【问题描述】:

我设置了一个有 2 个代理的 Kafka 应用程序,并创建了一个有 3 个分区的主题,复制因子 = 1。 然后我使用生产者进程发送数据。当生产者运行时,我杀死了 3 个代理中的一个,生产者进程发出以下消息:

kafka.common.FailedToSendMessageException:3 次尝试后发送消息失败。

如果允许数据丢失,我该怎么做才能让生产者进程自动恢复。 我认为最好的解决方案是将已删除代理中的分区移动到另外 2 个代理。 我该怎么办? 如果不是,是不是意味着面对leader=-1时就没有办法恢复了?

注意: 在我的情况下,复制因子设置为 1 以降低带宽利用率。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    http://kafka.apache.org/documentation.html

    对于复制因子为 N 的主题,我们最多可以容忍 N-1 服务器故障,而不会丢失任何提交到日志的消息。

    因此,如果您想进行自动故障转移 - 增加复制因子。

    【讨论】:

    • 如果我必须设置复制因子=1,我能否通过监控脚本手动进行故障转移。非常感谢。
    • 您需要将您的分区重新分配给另一个代理。试试这个:kafka.apache.org/documentation.html#basic_ops_cluster_expansionkafka-reassign-partitions.sh
    • 我已经阅读了您建议的文档,但是我很困惑,在运行重新分配工具时,任何生产者和消费者都无法工作,不是吗?直到重新分配工具完成后他们才能工作?
    • 当您丢失 N=1 的节点时,无论如何您都无法读取/写入该节点上的相应分区。所以你只有两个选择:修复节点或重新分配(并丢失所有数据)。我的建议:使用 N>1 - 它更简单。数据中心很难实现完全的网络利用率。
    • 你的回答对我帮助很大。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多