-1

更具体地说,假设我在网络电缆上绊倒,并将 ReDiS 集群的主服务器从该集群的 ReDiS 从服务器中分离出来。如果主人的数量翻倍,我可以让我的客户只写信给分裂前的“第一”主人吗?

例如,如果我有一个具有以下属性的集群,并且我在子网 192.168 之间的网络电缆上绊倒了。53 .* 和 192.168。105 .* 我最终会得到 6 个大师吗?

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
192.168 上的 ReDiS 4。192.168 上的105.2:7000(从属
ReDiS 5。105.2:7001(从属
ReDiS 6 在 192.168。105.2 :7002(机)

我猜 ReDiS 4、ReDiS 5 和 ReDiS 6 会很快让自己成为大师,我最终会得到以下结果:

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
=======//卡扣电缆//========
192.168 上的 ReDiS 4。192.168 上的105.2:7000(
ReDiS 5。105.2:7001(
192.168 上的 ReDiS 6。105.2:7002(

另外,当我更换折断的电缆时,我会再次得到以下结果,对吗?

192.168 上的 ReDiS 1。192.168 上的53.1 :7000(主)
ReDiS 2。53.1:7001(主)
192.168 上的 ReDiS 3。53.1 :7002(主)
192.168 上的 ReDiS 4。192.168 上的105.2:7000(从属
ReDiS 5。105.2:7001(从属
ReDiS 6 在 192.168。105.2 :7002(机)

如果我写给我的客户以了解大师“应该”是什么,并让他们只写信给 192.168 中的大师,这是否明智。53. *?

firstThreeMasters缓解这种情况下问题的一个示例,我是否可以仅在由 的成员表示的 ReDiS 之一成为从属时才更新以下变量?

    firstThreeMasters = [ "192.168.53.1:7000", "192.168.53.1:7001", "192.168.53.1:7002" ]

(虽然我的客户端代码的行为是这个问题的主题,但您认为这属于 serverfault.com 吗?如果是,请在评论中告知或建议移动它。)

4

1 回答 1

1

“我猜 ReDiS 4、ReDiS 5 和 ReDiS 6 会很快让自己成为大师”

实际上不,当至少一半的主服务器断开连接时,从服务器不会进行故障转移。事实上,当从属请求自动故障转移时,只有分配了插槽的主控才会参与选举过程。

并且不要试图假设您的客户端中哪些节点是任意的主节点,因为客户端不应该参与集群事务。如果您确实希望一组节点不断成为主节点,您最好编写一个守护进程来监视它们并向成为从节点的节点发送集群故障转移命令。

于 2016-06-16T04:59:08.533 回答