//,如果我切割网络电缆并从该群集的ReDiS从服务器拆分ReDiS群集的主服务器,如果主服务器的数量增加一倍,该怎么办?

问题描述:

//,更具体地说,让我们假设我在网络电缆上跳脱,并从该群集的ReDiS从服务器中分割ReDiS群集的主服务器。如果主人数量增加一倍,我可以让我的客户只在分组之前写信给“第一”主人吗?//,如果我切割网络电缆并从该群集的ReDiS从服务器拆分ReDiS群集的主服务器,如果主服务器的数量增加一倍,该怎么办?

例如,如果我有一个具有以下属性的群集,并且我在子网192.168之间的网络电缆上跳闸。 。*和192.168。 。*我是否有6位大师?

ReDiS 1 on 192.168。 53.1:7000(主)
在192.168上的ReDiS 2。 53.1:7001(master)
ReDiS 3 on 192.168。 53.1:7002(master)
ReDiS 4 on 192.168。 105.2:7000(奴隶
对192.168的ReDiS 5。 105.2:7001(奴隶
在192.168上的ReDiS 6。 105.2:7002(

我猜测,Redis的4,5 Redis的,和Redis的6很快就会使自己的主人,我会结束与以下:

的Redis 1在192.168上。 53.1:7000(主)
在192.168上的ReDiS 2。 53.1:7001(master)
ReDiS 3 on 192.168。 53.1:7002(master)
======= // Snapped Cable // ========
ReDiS 4 on 192.168。 105.2:7000(master
在192.168上的ReDiS 5。 105.2:7001(master
ReDiS 6 on 192.168。 105.2:7002(

此外,当我更换抓拍电缆,我想最终再下面,是吧?

ReDiS 1 on 192.168。 53.1:7000(主)
在192.168上的ReDiS 2。 53.1:7001(master)
ReDiS 3 on 192.168。 53.1:7002(master)
ReDiS 4 on 192.168。 105.2:7000(奴隶
对192.168的ReDiS 5。 105.2:7001(奴隶
在192.168上的ReDiS 6。 105。2:7002(

它是明智的,如果我写我的客户知道什么样的主人“应该”,并让他们只写了大师192.168。 。*?

缓解这种情况下的问题的一个示例,我可否让以下变量仅在firstThreeMasters成员所代表的ReDiS之一成为奴隶时才会更新?

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

(虽然我的客户端代码的行为是这个问题的主题,你认为这属于serverfault.com?请在评论意见或建议,如果这样来移动它。)

“我估计ReDiS 4,ReDiS 5和ReDiS 6会很快使自己成为主人“

实际上,当至少有一半的主站断开连接时,从站不会进行故障切换。事实上,只有当主人要求自动故障转移时,才会参与选举过程。

并且不要试图假定客户端中的哪些节点是任意主节点,因为客户端不应该参与集群事务。如果你肯定希望一组节点不断成为主节点,那么最好写一个监视它们的守护进程,并发送一个cluster failover命令给成为从节点的节点。

+0

//,一半的主人不会断开连接,它会断开连接的主人。这是否应该阅读,“......当一半的ReDiS断开连接。”? –

+0

@NathanBasanese一个奴隶故障转移,并成为一个主人,因为其他主人已经选举它。如果**至少有一半的主人断开了联系(我应该加上“至少”),选举不会有结果,因此没有奴隶会自动成为主人。 – neuront

+0

//,嗯。我今天在测试系统上测试它。 –