Redis故障转移,哨兵无法正常工作

时间:2015-08-14 06:57:12

标签: amazon-ec2 redis sentinel redis-sentinel

我正在尝试为故障转移支持设置redis-sentinel配置。这是我的配置,

machine1 : IP : 10.0.0.1 6379 with redis-sentinel port 26379         
machine2 : IP : 10.0.0.2 6379 with redis-sentinel port 26379     
machine3 : IP : 10.0.0.3 6379 with redis-sentinel port 26379     

Redis sentinel config

机器1:

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1 

机器2:

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1

机器3:

sentinel monitor mymaster 10.0.0.1 6379 2    
sentinel down-after-milliseconds mymaster 60000    
sentinel failover-timeout mymaster 180000    
sentinel parallel-syncs mymaster 1

将机器2和机器3添加为机器1的从属设备。复制工作正常。但是当机器1关闭时,其他机器不会发生主交换机。他们仍然是奴隶。我的设置有配置问题吗?

1 个答案:

答案 0 :(得分:1)

在我能给出更好的答案之前有些问题:

  1. 是否在redis实例上运行了身份验证?
  2. 让哨兵真正检测到pod的拓扑结构吗?
  3. 如果上述哨兵配置已完成,则哨兵实际上并未连接到哨兵。 Sentinel会重写配置文件以存储已发现的拓扑,因此您最初配置它时会伴随它发现的内容。特别是我们也会看到奴隶条目。

    另一种可能性是,达到法定人数的足够的哨兵没有成功连接到主人。如果Redis配置了需要的身份验证,您还需要使用sentinel set命令告知哨兵身份验证令牌。

    如果你可以发布完整的配置,以及当你掌握主要内容时哨兵的日志,我们可以提供更具体的行动。

    在相关的说明中,在制作中我会建议不要这样的设置。有了你所拥有的那个你可以结束所谓的裂脑。如果主人所在的机器与其他机器隔离,但仍在运行,则另外两台将选出一个新的主机,此时您将拥有两个主机。如果客户端仍然能够连接到maste,则现有连接将保留在原始连接上,但使用sentinel获取主服务器的新连接将连接到第二个主服务器。

    通过在不同的机器上运行哨兵,可以降低这种风险。如果您拥有有限数量的客户端计算机并且可以在那里运行哨兵,您几乎或完全可以消除这种可能性。