你好,斯塔克社区,
我有一个关于redis sentinel的问题。我使用aws和multi-az创建sensu集群。
在eu-central-1a上,我有一个sensu+redis(m),一个rbmq+哨兵和另外两个哨兵。欧盟中央1b也是,但redis是我在az的奴隶。
如果出现问题,并且eu-central-1a无法与eu-central-1b通信,会发生什么情况?我认为在eu-central-1b上的哨兵应该把我的redis奴隶提升为主人,因为他不能联系我的redis主人。所以我应该有两个redis大师在两个不同的az上一起运行。
但是当在az之间检索到链接时,我仍然有两个master,两个不同的数据。在这种情况下会发生什么?一个主服务器将成为一个从服务器,数据将被复制而不会丢失?我们需要重新启动一个主人而他将成为奴隶吗?

最佳答案

例如,sentinel检测对主服务器的更改
如果主人倒下而无法接近,就会选出一个新的奴隶。这是基于多个哨兵一致认为主人已经倒下的quorum。然后发生failover
一旦哨兵发现主人回到网上,它就是一个奴隶,我相信,因此新主人继续我相信。在从主站到新主站的转换过程中,不可避免地会丢失数据。
如果你失去连接,那么是哨兵将无法正常工作,因为它依赖于多个哨兵同意主redis关闭。你不应该在2哨兵系统中使用哨兵。
基本的解决方案是在另一台服务器上放置一个额外的sentinel,可能是不运行redis/sentinel的客户机/应用服务器,这样您就可以利用quorum和sentinel同意主服务器关闭。

09-12 16:11