【问题标题】:Redis Sentinel with 2 master after multi az netsplit多 az netsplit 后具有 2 个主控的 Redis Sentinel
【发布时间】:2016-11-29 19:46:56
【问题描述】:

你好堆栈社区,

我对特定问题案例的 Redis sentinel 有疑问。我使用 AWS 和 Multi AZ 来创建一个 sensu 集群。

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

如果出现问题并且 eu-central-1a 无法与 eu-central-1b 通信怎么办?我认为eu-central-1b上的Sentinel应该将我的redis slave提升为master,因为他无法联系我的redis master。所以我应该让 2 个 redis master 在 2 个不同的 AZ 上一起运行。

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

【问题讨论】:

    标签: redis sentinel redis-sentinel


    【解决方案1】:

    例如,Sentinel 检测到 master 的更改

    如果主服务器宕机并且无法访问,则会选出一个新的从服务器。这是基于quorum,其中多个哨兵同意主服务器已关闭。然后出现failover

    一旦哨兵检测到主人重新上线,我相信它就是奴隶,因此我相信新主人继续存在。在从 master 到新 master 的切换中,您将不可避免地丢失数据。

    如果您断开连接,那么是的,哨兵将无法正常工作,因为它依赖多个哨兵来同意主 redis 已关闭。您不应该在 2 sentinel 系统中使用 sentinel。

    基本解决方案是让您在另一台服务器上放置一个额外的哨兵,也许是没有运行 redis/sentinel 的客户端/应用程序服务器,这样您就可以使用quorum 和哨兵同意主服务器已关闭。

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 2015-02-20
      • 1970-01-01
      • 2022-12-16
      • 2021-11-09
      • 2021-01-13
      • 1970-01-01
      • 2015-07-16
      • 2015-11-12
      相关资源
      最近更新 更多