【问题标题】:Redis sentinel failover not workingRedis 哨兵故障转移不起作用
【发布时间】:2018-07-12 18:01:11
【问题描述】:

我已经在同一台机器(ubuntu VM)上设置了 Redis 哨兵,在端口 7000、7001 和 7002(一个主服务器和两个从服务器)上的三个服务器和端口 26379、26380 和 26381 上的三个哨兵。

当我启动它们时,根据日志,一切看起来都很好,当我对哨兵运行 INFO 命令时,看起来也很健康。但是当我放下主控时(通过 Ctrl+C 或 redis-cli SLEEP 命令使其停止工作),没有一个从属实例被引入作为新主控,并且哨兵尝试提名并连接到已经死亡的主控实例!我的配置如下:

大师:

port 7000      
protected-mode no

从 #1:

port 7001
slaveof 10.75.196.216 7000

从 #2:

port 7002
slaveof 10.75.196.216 7000

1 号哨兵:

port 26379
protected-mode no

sentinel myid bdddadb6e825065398be0bae214891d7ccbd6e2a
sentinel monitor themaster 10.75.196.216 7000 2
sentinel down-after-milliseconds themaster 3000
sentinel failover-timeout themaster 5000
sentinel parallel-syncs themaster 2
sentinel config-epoch themaster 0

# Generated by CONFIG REWRITE
dir "/home/bob/app/sentinel-test/master"
sentinel leader-epoch themaster 322
sentinel known-slave themaster 10.75.196.216 7002
sentinel known-slave themaster 10.75.196.216 7001
sentinel known-sentinel themaster 10.75.196.216 26380 181fb84351d6b96e0120bfa68331738ef111c49f
sentinel known-sentinel themaster 10.75.196.216 26381 8497ee90c1e4525c0f957407fefa77427f427e0d
sentinel current-epoch 322

2 号哨兵:

port 26380
protected-mode no

sentinel myid 181fb84351d6b96e0120bfa68331738ef111c49f
sentinel monitor themaster 10.75.196.216 7000 2
sentinel down-after-milliseconds themaster 3000
sentinel failover-timeout themaster 5000
sentinel parallel-syncs themaster 2

# Generated by CONFIG REWRITE
dir "/home/bob/app/sentinel-test/slave1"
sentinel config-epoch themaster 0
sentinel leader-epoch themaster 322
sentinel known-slave themaster 10.75.196.216 7001
sentinel known-slave themaster 10.75.196.216 7002
sentinel known-sentinel themaster 10.75.196.216 26381 8497ee90c1e4525c0f957407fefa77427f427e0d
sentinel known-sentinel themaster 10.75.196.216 26379 bdddadb6e825065398be0bae214891d7ccbd6e2a
sentinel current-epoch 322

3 号哨兵:

port 26381
protected-mode no

sentinel myid 8497ee90c1e4525c0f957407fefa77427f427e0d
sentinel monitor themaster 10.75.196.216 7000 2
sentinel down-after-milliseconds themaster 3000
sentinel failover-timeout themaster 5000
sentinel parallel-syncs themaster 2

# Generated by CONFIG REWRITE
dir "/home/bob/app/sentinel-test/slave2"
sentinel config-epoch themaster 0
sentinel leader-epoch themaster 322
sentinel known-slave themaster 10.75.196.216 7001
sentinel known-slave themaster 10.75.196.216 7002
sentinel known-sentinel themaster 10.75.196.216 26379 bdddadb6e825065398be0bae214891d7ccbd6e2a
sentinel known-sentinel themaster 10.75.196.216 26380 181fb84351d6b96e0120bfa68331738ef111c49f
sentinel current-epoch 322

主控制台日志:

Sentinel #1 控制台日志:

Sentinel #1 info 命令结果:

master 宕机后的 Sentinel #1 日志:

我的配置有什么问题?

提前致谢。

【问题讨论】:

    标签: caching redis failover


    【解决方案1】:

    好的,如果你注意到哨兵日志,当它启动时,甚至在主实例停止工作之前,它就会说两个从属实例已关闭:

    可能这就是为什么没有一个 slave 足够好成为新的 master 并且我们在 master 关闭后在哨兵日志中看到 -failover-abort-no-good-slave 错误。 p>

    所以,因为我记得我收到以下错误:

    (error) READONLY 你不能写一个只读的slave

    当我尝试通过 redis-cli 将密钥设置为从节点时,我决定通过将以下行放入从节点配置文件(两者)来修复此 READONLY 错误:

    从属只读无

    通过修复这部分并重新启动所有内容,哨兵日志中不再出现+sdown slave错误,主要问题也得到修复。哨兵现在可以在主服务器宕机事件时切换到新的从属实例。

    正如我在互联网上看到的,另一个人有类似的 +sdown 问题,但在他的情况下,问题是身份验证。

    我感谢所有人分享他们的知识和经验。希望这对某人有所帮助。

    【讨论】:

    • 哨兵日志文件的位置在哪里?
    • 对不起,我什么都不记得了。
    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    相关资源
    最近更新 更多