我是ZooKeeper的新手。这就是我需要的。
我有很多同龄人。
t=t_1 -> [peer-1 (Leader), peer-2]上,对等-1是主节点,所有客户端都连接到此节点。t=t_2 -> [peer-1 (Leader), peer-2, peer-3],稍后的某个时候,对等方3将加入该小组。是否可以“动态”地将对等点-3添加到动物园管理员服务器列表中(即,在对等服务器-1上不重新启动zookeeper )?t=t_3 -> [peer-3 (Leader), peer-4],经过一段时间,对等-1和对等-2都离开了组(例如,死亡或被关闭)。假设有一种方法可以动态地向组中添加对等方3和对等方4,那么对等方3将成为领导者,并且所有客户端请求都被发送到对等方3。除了使用ZooKeeper来做这样的事情之外,我还可以使用其他选项吗?
谢谢。
发布于 2012-07-07 13:41:15
目前,您不能在不重新启动的情况下动态地更改动物园管理员集群的配置。有一个有待解决的问题,动物园管理员-107。本文描述的聚类隶属度算法是非常有趣的,可以找到这里。
您可以通过一次重新启动服务器节点1来更改群集的配置。例如,如果集群有服务器A、B、C,并且希望用D替换服务器C,那么您可以这样做,
在t=t_1,您有一个包含两个动物园管理员节点的集群。这是非常脆弱的,就好像任何一个节点出现故障一样,您将无法建立仲裁(层(N/ 2) + 1),并且集群将不可用。通常,动物园群都是奇数。
我不知道你说什么的时候,
对等方3成为领导者,所有客户请求都被发送给对等方3。
您不能指定动物园管理员集群中的哪个节点是领导者,节点本身将选择其领导人,并且随着节点的上上下下,领导能力将发生变化。此外,客户端通常并不总是连接到领导者,但是给客户端提供集群中的机器列表,并随机连接到其中一台,如果连接到的服务器出现故障,则重新连接。您可以设置leaderServes选项以指定领导者没有服务器客户端连接。
发布于 2015-03-16 19:46:38
我不建议使用上述任何生产情况。以上解决方案只在您可以在所有更改完成之前失去ZK仲裁的情况下才有效。
原因如下:把C拉上来D,它的同侪名单是A,B,D“
->在这一点上A和B不知道D -> D知道A B
所以在这一点上,你只有A和B在法定人数内运作,然后你取下B,你就失去了法定人数。
您将失去对zk数据的访问,直到迁移完成并再次恢复仲裁。大多数设计良好的应用程序使用zk,在这种情况下,故障转移到只读模式,并将优雅地恢复。
在动物园管理员-107在动物园管理员3.5下发布之前,你需要明智地选择你。
最好是:
https://stackoverflow.com/questions/11375126
复制相似问题