【问题标题】:What happens if Zookeeper fails completely?如果 Zookeeper 完全失败会怎样?
【发布时间】:2022-03-15 17:25:39
【问题描述】:

我们设置了一个由 3 个代理组成的 Kafka/Zookeeper 集群。我们有一个生产者,将消息发送到一个特定的 Kafka 主题和几个从该主题读取的消费者组。这些消费者通过 Zookeeper 为自己(独立于 Kafka)执行领导者选举。

使用的版本是:

  • 卡夫卡:0.9.0.1
  • Zookeeper:3.4.6(包含在 Kafka-Package 中)

所有进程都由主管管理。到目前为止,一切正常。我们现在尝试(出于测试目的)只是简单地杀死所有 Zookeeper 进程,看看会发生什么。

正如我们所料,我们的消费者进程无法再连接到 Zookeeper。但出乎意料的是,卡夫卡经纪人仍然有效。我们的制作人完全没有抱怨,仍然能够写到这个话题。虽然我不能使用 kafka/bin/kafka-topics.sh 或类似的东西,因为它们都需要一个 zookeeper 参数,我仍然可以看到主题日志的实际大小在增长。重新启动 zookeeper 进程后,一切都像以前一样工作了。

我们现在想不通的是……那里到底发生了什么? 我们认为,Kafka 需要一个有效的 Zookeeper-Connection,我们在网上找不到任何解释这种行为的原因。

【问题讨论】:

  • Kafka 完成的所有操作都不需要 Zookeeper。例如,Kakfa 消费者客户将他们的偏移量提交给 ZK。据我所知。如果代理无法为失败的代理托管的分区选举新的领导者,也会使用 ZK。但是,只要所有经纪人都在工作,写作就不是问题:有关详细信息,请参阅kafka.apache.org/090/documentation.html#replicationconfluent.io/blog/…
  • > Kakfa 消费者客户将他们的偏移量提交给 ZK。他们有吗?据我了解,“新消费者”不需要那个。因为他们想将消费者与 Zookeeper 分离。这就是为什么您使用属性 bootstrap.servers 而不是 zookeeper.connect 并使用 Kafka-Ports
  • 是的。旧消费者提交到 ZK 的偏移量。新的消费者将他们的偏移量提交到 Kafka 主题中,并且独立于 ZK。
  • 根据 Wiki,Zookeeper 用于:服务器故障检测、数据分区和同步数据复制。请参考cwiki.apache.org/confluence/display/KAFKA/…?

标签: apache-kafka apache-zookeeper failover


【解决方案1】:

当你有一个zookeeper节点时,broker将无法联系zookeeper,broker发现zookeeper不可达后,broker也会变得不可达。因此,生产者和消费者。 在生产者的情况下,它开始下降(拒绝记录)。如果是消费者,可能会发生这样的情况,当代理启动并准备好时,未确认的读取记录可能会再次处理......

在 3node zk 的情况下,一个节点故障是可以接受的,因为 quorum 仍然满足......但不能承受将导致上述后果的 2node 故障......

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2022-11-16
    • 2020-01-07
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多