【问题标题】:Zookeeper resiliency动物园管理员弹性
【发布时间】:2020-04-10 13:29:49
【问题描述】:

我们有 17 个代理和 5 个动物园管理员组成的集群。我想测试动物园管理员的弹性。所以我取消了 3 个 zookeeper,因为我的理解是,对于一个有 5 个 zookeeper 的集群,它可以承受的最大中断是 2 个(使用 2n+1 规则)zookeepers 的故障。但令我惊讶的是,我能够生产和消费数据。即使所有动物园管理员(即全部 5 个)都倒下了,我也能够生成数据。有人可以解释这两种行为背后的原因吗?

【问题讨论】:

    标签: apache-kafka apache-zookeeper


    【解决方案1】:

    只有当集群发生变化时才需要 Zookeeper 进行通知。比如说,代理加入集群或关闭。如果所有代理都在运行,并且有消费者/生产者连接到它并发送/接收数据,则不需要 zookeeper 通信,一切都会继续工作。 新的生产者/消费者连接可能不起作用,但我对此不是 100% 有信心。

    当代理加入/离开集群时,需要通知消费者,以便他们可以为他们正在消费的分区/主题指向正确的领导者。此外,需要通知其他代理开始将数据同步到新代理,或者为现在无领导的主题/分区承担领导责任。所有这些通知都是通过 zookeeper 发送的。

    在这些链接中有更多详细信息:

    https://www.waitingforcode.com/apache-kafka/the-role-of-apache-zookeeper-in-apache-kafka/read

    https://data-flair.training/blogs/zookeeper-in-kafka/

    【讨论】:

    • 嗨@mjuarez,感谢您的详细回复。生产者可以用更少的动物园管理员来生产。然而,当我们可用的 Zookeeper 少于 2n+1 时,需要 zookeeper 的主题描述命令停止工作。但有时当我将足够的动物园管理员从停止状态带回运行状态以满足 2n+1 时,这也不起作用。 5 节点 zookeeper quorum 的含义,即使使用 3 个 zookeeper 主题描述也不起作用。当第 4 个节点启动时,它开始工作,然后再次停止第 4 个节点并没有影响它。不知道如何解释这种行为。你有什么想法吗?
    • @Anirban 听起来您没有运行不需要 Zookeeper 的最新 Kafka CLI。此外,生产者/消费者从几年前的 0.8 版本开始就不再需要 Zookeeper,即便如此,只要 ZK 不是 0,ZK 的数量并不重要
    【解决方案2】:

    只要不需要更改 In Sync 副本,Kafka 可以在没有 Zookeeper 的情况下正常运行。当经纪人反弹/加入时,一旦任何分区的 ISR 中有任何更新,Kafka 就会开始抛出错误。

    【讨论】:

    • 不只是 ISR,还可以创建、删除或更改任何主题或添加/删除代理
    猜你喜欢
    • 1970-01-01
    • 2013-09-14
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多