当前位置: 首页 > 知识库问答 >
问题:

Redis Sentinel:最后一个节点不会成为主人

蒯坚白
2023-03-14

我试图在一个3节点redis集群中建立一个自动故障转移系统。我在每个节点上都安装了redis-sentinel(就像这个家伙:http://www.symantec.com/connect/blogs/configuring-redis-high-availability)。只要我有两三个节点,一切都很好。问题是,当只剩下onte节点并且它是从节点时,它不会自动被选为主节点。仲裁设置为1,因此最后一个节点检测到主节点的odown,但不能投票支持故障转移,因为没有多数。

为了克服这个(令人惊讶的)问题,我编写了一个小脚本,向其他节点询问它们的主节点,如果它们不回答,我将当前节点设置为主节点。该脚本在redis-sentinel.conf文件中作为通知脚本调用。然而,redis-sentinel服务一启动,这个配置就被“抹去”了!如果我查看/etc中的配置文件,“sentinel notification-script”行已经消失(redis-sentinel重写了它的配置文件,为什么不重写),但是我编写的配置不再可用:

1)  1) "name"
    2) "mymaster"
    3) "ip"
    4) "x.x.x.x"
    5) "port"
    6) "6379"
    7) "runid"
    8) "somerunid"
    9) "flags"
   10) "master"
   11) "pending-commands"
   12) "0"
   13) "last-ping-sent"
   14) "0"
   15) "last-ok-ping-reply"
   16) "395"
   17) "last-ping-reply"
   18) "395"
   19) "down-after-milliseconds"
   20) "30000"
   21) "info-refresh"
   22) "674"
   23) "role-reported"
   24) "master"
   25) "role-reported-time"
   26) "171302"
   27) "config-epoch"
   28) "0"
   29) "num-slaves"
   30) "1"
   31) "num-other-sentinels"
   32) "1"
   33) "quorum"
   34) "1"
   35) "failover-timeout"
   36) "180000"
   37) "parallel-syncs"
   38) "1"

这是哨兵指挥的结果。唯一的问题是,我以前将“毫秒后下降”设置为5000,将“故障转移超时”设置为10000...

不知道有没有人遇到过类似的?好吧,如果有人对正在发生的事情有一点了解,我会很高兴的;)

共有1个答案

归俊杰
2023-03-14

这就是不在redis实例节点上放置哨兵的原因。就当他们是监视探员吧。您不会将您的网站监视器放置在运行您的网站的同一个节点上,并期望捕捉节点死亡。同样的预期是W/Sentinel。

实现哨兵监视的正确途径是理想地从客户机运行它们,如果这不可能或可行,则从尽可能靠近客户机的专用节点运行它们。

正如安提雷兹所说,你需要有足够的哨兵来进行选举。有两个选举:1:决定新的主人和2:决定哪个哨兵处理晋升。在您的场景中,您只有一个哨兵,但是要选举一个哨兵来处理晋升,您的哨兵需要法定人数的哨兵投票。这个数字是所有看到的哨兵中的大多数。在你的情况下,需要两个哨兵投票才能进行选举。此仲裁号码不可配置,且不受仲裁设置的影响。这是为了减少多个主控器的机会。

 类似资料:
  • 问题内容: 我试图使用ReactCSSTransitionGroup为列表插入和删除创建动画,但是删除动画总是只对列表的最后一项设置动画,而不是要删除的动画。 这是一个jsbin来说明这个问题。尝试按“添加”按钮以验证插入动画确实按预期工作,然后单击任何项​​目旁边的“ x”,以查看列表中最后一项被动画化而不是您尝试删除的动画的问题。 设置TransitionGroup时我做错了什么吗?还是我在C

  • 字节Java后端一面凉透,中途都想说可以不面了吗 太菜了,都不会 1.自我介绍,要求从你的优势,。。。(忘了)反正三个方面进行介绍 2.接受用go语言吗 3.建索引需要从哪几个方面考虑,给了几个字段,订单id,商品id,用户id,时间。分别不同查询场景的时候怎么建立索引。 4.log日志文件,数据量特别大,里面有很多订单信息,统计前topk商品id (不知道,虽然面试官一直在引导,但真不会) 5.

  • 问题内容: 我正在练习使用链表节点,遇到了一个我不知道如何回答的问题。如何删除链接列表中的最后一个节点。下面的代码适用于所有条目的最后一个节点。最后一个不会被删除。 节点类别 主要 问题答案: 我想您的最后一个元素失败了。最后一个元素将没有元素。因此,不会将最后一个元素与传递的字符串进行比较。您应该使用调试器进行跟踪。

  • 我正在尝试从单链接列表中删除最后一个节点。但我仍然无法在代码中解决此错误。我的方法没有删除最后一个节点。调用delete方法后,它仍然显示我要删除的节点。列表的其余部分将被删除,但最后一个节点本身不会被删除。你能告诉我我遗漏了什么,或者错误在哪里吗? LinkedList: 列表: 节点:

  • 我目前正在研究Hazelcast,将其用作集群中的消息队列和共享内存存储。 我想知道如何处理最后一个节点下降的情况。我想坚持所有hazelcast管理的数据,队列,等磁盘的能力,以再次启动在以后的时间。 MapStore和MapLoad功能看起来很有趣,但何时使用?文档中说它可以在需要的时候使用,但我只需要在关闭最后一个节点时使用它。在正常操作期间,不需要保留所有数据。 此外,磁盘写入应该在最末尾

  • 公共类LinkedList11{//私有内部类节点 }