【问题标题】:How does Zookeeper manage node roles in other clusters?Zookeeper 如何管理其他集群中的节点角色?
【发布时间】:2020-10-05 02:43:36
【问题描述】:

我的理解是,Zookeeper 常用于解决分布式系统中“跟踪哪个节点扮演特定角色”的问题(例如,数据库中的主节点或 MapReduce 集群中的主节点)等)。

为简单起见,假设我们有一个具有一个主节点和多个副本的数据库,并且数据库中的当前主节点出现故障。在这种情况下,原则上可以使其中一个副本节点成为新的主节点。此时我的理解是:

如果我们没有 Zookeeper

应用服务器可能不知道我们有一个新的主节点,因此它们将不知道将写入发送到哪里,除非我们在应用服务器本身上有一些自定义逻辑来检测/纠正这个问题.

如果我们有 Zookeeper

Zookeeper 会以某种方式检测此故障,并更新相应主密钥的值。此外,应用服务器可以(可选?)在 Zookeeper 中注册钩子,因此 Zookeeper 可以通知他们这个失败,以便应用服务器可以更新(例如在内存中),哪个 DB 节点是新的主节点。


我的问题是:

  1. Zookeper 如何知道要让哪个节点成为主节点? Zookeper 是否对该选择负责?
  2. 如何将此信息传播到需要与 Zookeeper 交互的节点?例如。如果其中一个 Zookeeper 节点 出现故障,应用服务器如何知道在这种情况下要命中哪个 Zookeeper 节点? Zookeeper 的管理方式是否与竞争解决方案不同,例如etcd?

【问题讨论】:

  • 从我的角度来看 1 和 2
  • @ShalithaJayamal 嗯?不确定我是否关注

标签: configuration apache-zookeeper distributed-computing


【解决方案1】:

1. 和 2. 的答案都称为 leader election process,其工作原理如下:

当一个进程在 ZK 管理的集群中启动时,集群进入election 状态。如果有领导者,则存在已建立的层次结构,并且现有领导者只是经过验证。如果没有领导者(比如 master 宕机),ZK 会强制 znode 使用序列标志来寻找新的领导者。每个节点与其对等节点对话并发送包含节点标识符 (sid) 和它执行的最新事务 (zxid) 的消息。这些消息称为votes。当一个节点收到投票时,它可以忽略它,也可以根据 zxid 保留它。如果 zxid 较新,它会保留投票,如果它比它拥有的旧它会丢弃它。如果 zxids 相同,则 sid 最高的投票获胜!所以会有一段时间,所有节点都将拥有相同的投票,这将由 sid 定义新的领导者。所以这就是 ZK 选举新领导节点的方式!

【讨论】:

  • 谢谢!所以 Zookeper 实际上可以负责选举主节点,例如数据库集群?即,我不是在谈论为 Zookeeper 本身选举主节点或领导者,而是为 不同集群 选择主节点,例如具有一个主节点和多个只读副本的数据库集群。 Zookeeper 真的可以管理 other 集群的 master 选举吗?如果是这样,您是否有任何链接可以提供上述证据,或者理想地解释其工作原理以及适用于什么类型的集群?
  • 如果您使用 cluster 配置 ZK,您的所有问题都是肯定的。这是一个link,其中列出了许多 ZK 已集成的项目(来自 Apache)。我希望它有所帮助。
  • 谢谢!所以我要做到这一点:一方面,我们有一个 ZK 集群,它是一个可以专门用于运行和托管 ZK 本身的集群。然后单独,我们可能有其他集群可能由 ZK管理。这可以是例如一个具有主节点和从节点的数据库集群,我们可能希望 ZK 通过您上面概述的领导者选举过程来管理哪些节点是“主节点”。我做对了吗?我问是因为我以为你上面提到的leader选举过程只适用于选择ZK集群中的master,而不适用于other集群.
  • 没错,ZK 是分布式系统的协调服务,但它本身也是一个分布式应用程序。现在,假设您使用 ZK(集成或单个 ZK 实例)管理集群。这个集群(客户端节点)创建了 ZK 管理的不同 znode。这些 znode 有一个层次结构,并且有各种各样的(临时的、持久的、顺序的)。如果您的集群的一个客户端(被声明为主节点)死亡,那么其余客户端节点创建的剩余 znode 将按 ZK 排序,并且您的集群会重新同步。
猜你喜欢
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2021-04-07
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多