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

雷迪斯哨兵主人没有立即降级为奴隶

卓云
2023-03-14

当主人倒下的时候,它不应该被降级为奴隶吗?有了这一点,当它再次升起时,它将立即成为奴隶。我知道(自从Redis2.8?)配置重写功能使得Redis实例关闭时不能修改配置。

在一段时间内有两个主服务器对我来说是一个问题,因为在这么短的时间内,HaProxy不是向一个主服务器Redis发送请求,而是在这两个主服务器之间进行负载平衡。

有没有办法把失败的主人立即降级为奴隶?

81358:X 23 Jan 22:12:03.088 # +sdown master redis-ha 127.0.0.1                       63797.0.0.1 26381 @ redis-ha 127.0.0.1 6379
81358:X 23 Jan 22:12:03.149 # +new-epoch 1
81358:X 23 Jan 22:12:03.149 # +vote-for-leader 6b5b5882443a1d738ab6849ecf4bc6b9b32ec142 1
81358:X 23 Jan 22:12:03.174 # +odown master redis-ha 127.0.0.1 6379 #quorum 3/2
81358:X 23 Jan 22:12:03.174 # Next failover delay: I will not start a failover before Sat Jan 23 22:12:09 2016
81358:X 23 Jan 22:12:04.265 # +config-update-from sentinel 127.0.0.1:26381 127.0.0.1 26381 @ redis-ha 127.0.0.1 6379
81358:X 23 Jan 22:12:04.265 # +switch-master redis-ha 127.0.0.1 6379 127.0.0.1 6381
81358:X 23 Jan 22:12:04.266 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ redis-ha 127.0.0.1 6381
81358:X 23 Jan 22:12:04.266 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ redis-ha 127.0.0.1 6381
81358:X 23 Jan 22:12:06.297 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ redis-ha 127.0.0.1 6381
81354:S 23 Jan 22:12:03.341 * MASTER <-> SLAVE sync started
81354:S 23 Jan 22:12:03.341 # Error condition on socket for SYNC: Connection refused
81354:S 23 Jan 22:12:04.265 * Discarding previously cached master state.
81354:S 23 Jan 22:12:04.265 * SLAVE OF 127.0.0.1:6381 enabled (user request from 'id=7 addr=127.0.0.1:57784 fd=10 name=sentinel-6b5b5882-cmd age=425 idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=14 qbuf-free=32754 obl=36 oll=0 omem=0 events=rw cmd=exec')
81354:S 23 Jan 22:12:04.265 # CONFIG REWRITE executed with success.
81354:S 23 Jan 22:12:04.371 * Connecting to MASTER 127.0.0.1:6381
81354:S 23 Jan 22:12:04.371 * MASTER <-> SLAVE sync started
81354:S 23 Jan 22:12:04.371 * Non blocking connect for SYNC fired the event.
81354:S 23 Jan 22:12:04.371 * Master replied to PING, replication can continue...
81354:S 23 Jan 22:12:04.371 * Partial resynchronization not possible (no cached master)
81354:S 23 Jan 22:12:04.372 * Full resync from master: 07b3c8f64bbb9076d7e97799a53b8b290ecf470b:1
81354:S 23 Jan 22:12:04.467 * MASTER <-> SLAVE sync: receiving 860 bytes from master
81354:S 23 Jan 22:12:04.467 * MASTER <-> SLAVE sync: Flushing old data
81354:S 23 Jan 22:12:04.467 * MASTER <-> SLAVE sync: Loading DB in memory
81354:S 23 Jan 22:12:04.467 * MASTER <-> SLAVE sync: Finished with success

共有1个答案

归星驰
2023-03-14

如果Redis节点宕机,当/如果它恢复时,它将使用宕机前的相同角色恢复。如果Sentinel无法ping节点,则无法重新配置该节点。因此,从节点恢复到哨兵确认并重新配置它之间有一段短暂的时间。这解释了多主状态。

如果您设置了使用Haproxy,一个解决方案是在启动进程之前重新配置Redis节点的角色。只要Redis.conf中有奴隶条目,Redis就会作为奴隶启动。此解决方案的主要问题是它不能解决网络分区方案。

希望能有所帮助。

 类似资料:
  • 我一直在读有关Redis sentinel用于故障转移的文章。我计划有1主+1从,如果主倒下超过1分钟,把从变成主。我知道这在哨兵身上是百分之百可能的。 null 与1个哨兵相比,多个哨兵有什么好处?我的应用程序一次只能连接到1个哨兵,即使有2个哨兵,如果其中一个在应用程序层中出现复杂的逻辑,我的应用程序也不能在其中任何一个之间旋转或切换。

  • https://github.com/kubernetes/examples/tree/master/staging/storage/redis 它在给定的图像中工作得很好,但当我们使用Redis官方图像时,哨兵无法在第一个豆荚中连接到Redis。 它显示以下错误: 无法连接到redis,地址-P:6379 如何创建带有Redis官方图像的集群?

  • 我试图有1个redis大师与2个redis复制品绑在一个3法定人数哨兵在Kubernetes。我对Kubernetes很陌生。 我最初的计划是让主控器在一个吊舱上运行,并绑定到一个Kubernetes SVC,而两个副本在自己的吊舱上运行,并绑定到另一个Kubernetes SVC。最后,3个哨兵吊舱将被绑在他们自己的SVC上。副本将被绑定到主SVC(因为没有SVC,ip将会改变)。sentine

  • 我使用的是Spring2.1.1和Redis4.0.1。我已经配置了两台节点计算机,一台具有主配置,另一台具有从配置。我正在两个系统上使用jedis(不使用spring-jedis)运行Springboot应用程序,出现了不同的情况- > 在主节点上运行应用程序(用主节点配置的redis)时,数据会集中在缓存中。 在从节点上运行应用程序时(redis配置了从节点),出现异常-(i.)我能够从sen

  • 我很好奇当计算redis故障转移的多数时,是否考虑到了死掉的(不可到达的)哨兵进程。例如,如果我在节点A有三个哨兵+Redis Master,在节点B有三个哨兵+Redis Slave,如果节点A完全脱机,Redis Slave B会升为Master吗?多数票(N/2+1)将意味着4个哨兵同意,但由于节点A中的三个哨兵已经死亡,他们是否算作N的一部分?

  • 我试图设置一个典型的redis sentinel配置,三台机器将运行三个redis服务器和三个redis sentinel。redis服务器的主/从部分工作正常,但哨兵不工作。当我启动两个哨兵时,与主人一起的哨兵检测奴隶,但在指定的时间后将他们标记为down。我在debian jessie机器上运行Redis 3.0.5 64位。 哨兵配置文件: 当然,这些机器之间存在连通性,因为从机工作正常: