Redis Sentinel 没有故障转移

Redis Sentinel 没有故障转移

我们有三台 redis 3.2.7 服务器。每台 redis 服务器都运行 redis 本身和 redis sentinel(用于故障转移)。以下是每个节点的 sentinel 配置

从站 1(哨兵) 192.168.0.15

bind 192.168.0.15
port 26379
logfile "/var/log/sentinel.log"
sentinel myid 57ge72174330d523tcec8adcd1e039c7f51c298c
sentinel monitor mymaster 192.168.0.16 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster super-secret-password
sentinel config-epoch mymaster 77
dir "/"
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 192.168.0.17 26379 2b72876887f0e2c8db75e6d407babb60eb1a7185
sentinel known-sentinel mymaster 192.168.0.16 26379 06b84b7e6e320797ef49681c2e0598364b673c15
sentinel current-epoch 78

主服务器(哨兵)-192.168.0.16

bind 192.168.0.16
port 26379
logfile "/var/log/sentinel.log"
sentinel myid 06b84b7e6e320797ef49681c2e0598364b673c15
sentinel monitor mymaster 192.168.0.16 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster super-secret-password
dir "/"
sentinel config-epoch mymaster 77
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 192.168.0.17 26379 2b72876887f0e2c8db75e6d407babb60eb1a7185
sentinel known-sentinel mymaster 192.168.0.15 26379 57ge72174330d523tcec8adcd1e039c7f51c298c
sentinel current-epoch 78

从属 S (哨兵) 192.168.0.17

bind 192.168.0.17
port 26379
logfile "/var/log/sentinel.log"
sentinel myid 2b72876887f0e2c8db75e6d407babb60eb1a7185
sentinel monitor mymaster 192.168.0.16 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster super-secret-password
dir "/"
sentinel config-epoch mymaster 77
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 192.168.0.16 26379 06b84b7e6e320797ef49681c2e0598364b673c15
sentinel known-sentinel mymaster 192.168.0.15 26379 57ge72174330d523tcec8adcd1e039c7f51c298c
sentinel current-epoch 78

如果我在主节点上停止 redis-server 和 redis-sentinel,我会在从节点上看到以下内容:

2664:X 01 Mar 16:17:15.563 # +sdown master mymaster 192.168.0.16 6379

因此哨兵服务器认为主服务器已关闭。但是没有发生故障转移。如果我使用以下命令检查从服务器:

redis-cli -h 127.0.0.1 -p 26379 -a super-secret-password sentinel get-master-addr-by-name mymaster

我得到:

1) "192.168.0.16"
2) "6379"

因此,他们将旧的 Master(已被关闭)视为仍然是他们的 Master。如果他们认为 Master 已关闭,那么为什么他们不选出新的 Master?

顺便说一句,我相信当我们运行 Redis 2.8.9 时,此配置是有效的。所以我只能猜测 redis sentinel 可能在 3.2.7 中发生了变化。我只是不确定从哪里开始寻找。

如能得到任何帮助或指点,我将不胜感激。

谢谢布拉德

答案1

Redis 3.2 似乎存在以下问题https://github.com/redis/redis/issues/3416

相关内容