Redis失败,哨兵不工作



我正在尝试为故障转移支持设置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. 在redis实例上是否有身份验证运行?
  2. 哨兵真的检测到pod的拓扑结构了吗?

如果上述哨兵配置完成,哨兵实际上没有连接到主服务器。Sentinel重写配置文件以存储发现的拓扑,因此您最初配置它的内容将伴随着它发现的内容。特别地,我们也会看到从条目。

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

如果你可以发布完整的配置,以及当你关闭主时哨兵的日志,我们可以提供更具体的操作。

与此相关的是,在生产环境中,我不建议使用这种设置。如果你有一个,你可能会以所谓的脑裂而告终。如果主机所在的机器与其他机器隔离,但仍在运行,其他两台机器将选举一个新的主机,此时您将拥有两台主机。如果客户端仍然能够连接到主服务器,那么现有的连接将保持在原来的连接上,但是使用sentinel获取主服务器的新连接将连接到第二个主服务器。

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

最新更新