Redis sentinel:强制切换到另一个主服务器

Redis sentinel:强制切换到另一个主服务器

语境:

我有 3 个 redis 节点和 3 个 sentinel。故障转移工作正常。当我关闭主节点时,会选出另一个主节点。

需要:

我需要一种方法来测试行为,以确保一切按预期运行。我希望可以强制哨兵选择一个特定的 redis 节点作为主节点。

我想我可以通过关闭两个不应该是主节点的节点来做到这一点,但我希望我可以向其中一个哨兵发出命令来解决我的问题。

总结:

我可以指示我的哨兵选择一个特定的 redis 节点作为主节点吗?

答案1

你可以让两个你不想作为主服务器的 Redis 服务器挂起,我认为(未经测试)Sentinel 会选择剩下的一个。可能需要两次选举...

模拟 Redis 服务器挂起:

redis-cli DEBUG sleep 30

或者

redis-cli DEBUG segfault

然后强制故障转移:

SENTINEL failover

或许更好的方法是使用优先选项。

https://redis.io/topics/sentinel

从属优先级

Redis 实例有一个名为“slave-priority”的配置参数。此信息由 Redis 从属实例在其 INFO 输出中公开,Sentinel 使用它来从可用于故障转移主服务器的从属服务器中挑选一个:

如果从属优先级设置为 0,则从属永远不会晋升为主。 Sentinel 优先选择优先级较低的从属。

比如说,如果在当前主服务器的同一个数据中心里有一个从服务器 S1,而在另一个数据中心里有一个从服务器 S2,那么可以将 S1 的优先级设置为 10,将 S2 的优先级设置为 100,这样,如果主服务器发生故障,并且 S1 和 S2 都可用,则会优先使用 S1。

有关从站选择方式的更多信息,请检查本文档的从站选择和优先级部分。

相关内容