我可以只使用 2 Redis/Sentinal 服务器来管理我的 2 服务器设置上的故障转移吗?

Can i just use 2 Redis/Sentinal servers to manage failover on my 2 server setup?

恕我见识浅薄,一直想不通为什么需要3台服务器来管理Redis的fail-over?

我有一个应用程序在负载均衡器下为服务器实例提供服务,我希望为会话和通知管理设置 Redis。

我的要求很简单,我想在两台服务器上安装 Redis,并在一台服务器出现故障时制定故障转移计划,以便最终用户不会在会话和通知方面受到影响。

我有哪些选择?提前致谢。

如果你只有两台服务器,那么我至少能想到一个问题。 如果您的主从之间存在网络问题怎么办。如果它导致奴隶成为主人,那么你将有两个主人(因为第一个永远不会倒下,记住)。这被称为裂脑场景。

为避免脑裂情况,master 数量应该为奇数,并在 redis-sentinel.conf 文件中适当定义 quorum(理想情况下应该是 (n+1)/2),即一个简单的大多数。

这意味着如果你有3个节点,1个master+2个slave,quorum为2。如果出现网络错误,不知何故两个相互联系的实例将成为master(quorum of 2) .

所以,我们的想法是拥有奇数个实例,并设置适当的法定人数。

我最终在我的场景中使用了 Hazelcast,因为如果一次只有一个实例失败,它能够进行故障转移。 如果您只有 2 个服务器的限制,那么简单的答案就是使用 HAZELCAST。