在多个z netsplit之后,Redis Sentinel有2个主人

时间:2016-07-26 08:50:45

标签: redis sentinel redis-sentinel

Hello堆栈社区,

我对Redis哨兵提出了一个针对特定问题案例的问题。我使用AWS和Multi AZ来创建一个sensu集群。

在eu-central-1a上我有一个sensu + redis(M),一个RBMQ + Sentinel和另外两个Sentinel。在eu-central-1b上也是如此,但是redis是我AZ的奴隶。

如果出现问题并且eu-central-1a无法与eu-central-1b通信会发生什么?我认为在欧洲中心1b上的Sentinel应该将我的redis奴隶提升为主人,因为他无法联系我的redis主人。所以我应该在2个不同的AZ上一起运行2个redis主机。

但是当在AZ之间检索链接时,我仍然会有2个主人,有2个不同的数据。在这种情况下会发生什么?一个主人将成为奴隶,数据将被复制而不会丢失?我们是否需要重新启动主人并且他将成为奴隶?

1 个答案:

答案 0 :(得分:0)

Sentinel检测到对主设备的更改,例如

如果主站关闭且无法访问,则选择新的从站。这基于quorum,其中多个哨兵同意主人已经失败。然后发生failover

一旦哨兵检测到主人回到网上,那么它就是奴隶我相信因此新主人继续相信。您将在从主服务器切换到新主服务器时丢失数据,这是不可避免的。

如果你断开了连接,那么哨兵将无法正常工作,因为它依赖于多个哨兵同意主雷迪斯已关闭。你不应该在2个哨兵系统中使用哨兵。

基本的解决方案是让你在另一台服务器上放一个额外的哨兵,也许是没有运行redis / sentinel的客户端/应用服务器,这样你可以利用quorum和哨兵同意主人失明了。