我正在运行包含一个主服务器和一个从服务器的复制 Redis。我的目标是实现复制(使用 Redis sentinels),其中当主服务器发生故障时,从服务器将成为主服务器,但当旧的主服务器恢复时,旧主服务器将被提升回来。
初始设置很简单。我在与主服务器相同的服务器上使用一个哨兵,在与从服务器相同的服务器上使用两个哨兵。在法定人数为 2 的情况下,当主服务器不可用时,从服务器上的两个哨兵会将从服务器提升为主服务器。当旧主服务器恢复时,它会重新连接到旧从服务器(已提升为主服务器)并成为其从服务器。
之后,一切照旧。不过我想将从服务器(旧主服务器)升级为主服务器,就像在原始布局中一样。这可以通过 redis-cli 手动完成(我认为也可以通过 cron 完成),但是除了强制 cronjob 之外,有没有其他方法可以通过 sentinel 配置或其他方法完成?我的目的基本上是拥有一个由从服务器备份的静态主服务器,一旦原始主服务器再次可用,它就会返回主服务器状态。
答案1
目前还没有任何机制可以故障恢复到目标主服务器。slave-priority
当主服务器宕机时,这会影响从服务器的选择,但不会导致哨兵在当前主服务器健康时启动故障恢复。要自动完成此操作,您需要在哨兵之外实现它。
答案2
要自动处理主选举,您可能需要尝试以下解决方案: