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个不同的数据。在这种情况下会发生什么?一个主人将成为奴隶,数据将被复制而不会丢失?我们是否需要重新启动主人并且他将成为奴隶?
答案 0 :(得分:0)
Sentinel检测到对主设备的更改,例如
如果主站关闭且无法访问,则选择新的从站。这基于quorum
,其中多个哨兵同意主人已经失败。然后发生failover
。
一旦哨兵检测到主人回到网上,那么它就是奴隶我相信因此新主人继续相信。您将在从主服务器切换到新主服务器时丢失数据,这是不可避免的。
如果你断开了连接,那么哨兵将无法正常工作,因为它依赖于多个哨兵同意主雷迪斯已关闭。你不应该在2个哨兵系统中使用哨兵。
基本的解决方案是让你在另一台服务器上放一个额外的哨兵,也许是没有运行redis / sentinel的客户端/应用服务器,这样你可以利用quorum
和哨兵同意主人失明了。