ZooKeeper - 动态添加对等体?

Sou*_*nta 6 p2p dynamic master-slave apache-zookeeper

我是ZooKeeper的新手.这就是我需要的.

我有一个同龄人的网络.

  1. t=t_1 -> [peer-1 (Leader), peer-2] peer-1是master,所有客户端都连接到此节点.

  2. t=t_2 -> [peer-1 (Leader), peer-2, peer-3] 稍后的某个时间,peer-3加入了该组.是否可以"动态"将peer-3添加到zookeeper服务器列表中(即,无需在peer-1上重新启动ZooKeeper)?

  3. t=t_3 -> [peer-3 (Leader), peer-4] 一段时间后,peer-1和peer-2都离开了组(例如,死亡或关闭.)假设有一种方法可以将peer-3和peer-4动态添加到组peer-3成为领导者并且所有客户端请求都发送到peer-3.

除了使用ZooKeeper做这样的事情之外,我还能使用其他任何选项.

谢谢.

sbr*_*ges 6

目前,您无法在不重新启动的情况下动态更改zookeeper群集的配置.有一个未解决的问题需要解决这个问题,ZOOKEEPER-107.描述集群成员算法的论文非常有趣,可以在这里找到.

您可以通过一次重新启动服务器节点1来更改群集的配置.例如,如果您的群集有服务器A,B,C,并且您想要用D替换服务器C,那么您可以执行类似的操作,

  • 打倒C
  • 提出D,它的对等列表是A,B,D
  • 拿下B
  • 将B的对等列表更改为A,B,D
  • 培养B
  • 将A Change A的对等列表删除到A,B,D
  • 培养一个
  • 将所有客户端的客户端配置更改为指向A,B,D

在t = t_1,您有一个包含2个zookeeper节点的集群.这非常脆弱,就好像任一节点出现故障,您将无法建立仲裁(楼层(N/2)+ 1),并且群集将不可用.通常,zookeeper集群是奇数.

当你说时,我不确定你要做什么

peer-3成为领导者,所有客户端请求都发送到peer-3.

您无法指定zookeeper群集中的哪个节点是领导者,节点本身将选择其领导者,并且领导将随着节点上下变化而变化.同样,客户端通常并不总是连接到领导者,但是客户端被给予群集中的计算机列表,并且随机连接到一个,如果他们连接的服务器关闭则重新连接.您可以设置leaderServes选项以指定领导者不服务客户端连接.