gpt4 book ai didi

apache-kafka - 在 Kafka 集群中添加新的 ZooKeeper 节点?

转载 作者:行者123 更新时间:2023-12-01 13:18:44 25 4
gpt4 key购买 nike

我运行了一个由五个节点组成的 Apache Kafka 集群,我正在使用一个由三个节点组成的 Apache ZooKeeper 集群。

在 zookeeper.properties 文件中:

server.1=zNode01:2888:3888
server.2=zNode02:2888:3888
server.3=zNode03:2888:3888

在 server.properties 文件中:
zookeeper.connect=zNode01:2181,zNode02:2181,zNode03:2181

我想添加一个新的 ZooKeeper 节点:
  • 我需要将这个新的 ZooKeeper IP 添加到现有的 ZooKeeper 属性文件中并需要重新启动它,或者有另一种方法可以做到吗?
  • 我需要将这个新的 ZooKeeper IP 添加到 Kafka server.properties 文件并需要重新启动它或者有另一种方法可以做到吗?
  • 最佳答案

    它比@cricket_007 描述的更复杂。在您尝试将新成员添加到现有 zookeeper 集群之前,这将是一个很好的阅读。

    https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html

    专攻 “修改当前动态配置”部分。

    基本上,这些是高级步骤:

    a) 必须将新服务器介绍给领导者。这是通过在 zookeeper.properties 文件中添加自身和“足够的集群信息”来完成的,以便加入者连接到现有的领导者。配置不需要绝对最新,但足够新鲜以与当前领导者联系。为此,您只需从集群中的节点之一获取 zookeeper.properties 文件,将加入者信息附加到其中,然后在加入者节点上启动 zookeeper 服务器。

    b) 请注意,加入者能够与集群的领导者交谈并不会使其自动成为集群的一部分。 zookeeper 集合必须投票并决定将新节点添加到集群中。加入者的状态目前是无投票权的追随者,如果您查看zookeeper ensemble 的当前配置(通过zkcli 的“config”命令),您将不会看到ensemble 中列出的新节点。

    c) 现在,我们使用 zkcli 的“reconfig”命令将新节点作为投票参与者或观察者添加到集群中。投票参与者意味着所有的共识决定(例如,谁是新领导者,是否提交写入等)将涉及所有投票参与者(而不是观察者)。添加观察者主要是为了增加 zookeeper 整体的读取吞吐量,而不会增加将它们纳入每个写入操作的两阶段提交的额外开销。 reconfig 命令还执行此两阶段提交,其中领导者从所有投票参与者那里收集是否应将新节点添加到集群的投票。如果现有参与者的法定人数同意,则将新节点添加到集群中。

    d) 现在,执行 zkcli 的 config 命令将显示新节点作为集群的一部分,作为投票参与者或观察者。

    e) 最后,您需要更新 kafka 的 server.properties 文件以关闭循环。即使可能不需要立即进行此更改,这也会通知 kafka 服务器(它是 Zookeeper 客户端)zookeeper 集群中新成员的可用性,以便它可以在故障情况下回退到新添加的节点。

    希望答案有助于理解向zookeeper集群动态添加新节点的工作原理。

    关于apache-kafka - 在 Kafka 集群中添加新的 ZooKeeper 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018019/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com