如何实现Redis Labs Enterprise Cluster High Availability?

How to implement Redislabs Enterprise Cluster High Availibility?

开始学习RedisLabs Enterprise Cluster,但我对如何使用RLEC实现高可用性感到困惑。我了解到 RLEC 使用专有复制,这与开源 Redis 不同。我想要实现的是,如果我的主数据库出现故障,我的应用程序仍然可以通过连接到副本数据库正常运行。

我的问题是:

  1. 我已经创建了2个节点。如果我创建了一个名为 testing 并启用了复制的新 Redis 数据库,其中哪个节点是主数据库(以及哪个节点 是奴隶)?端点表示的是当前的master吗?

  1. 我连接到每个服务器中的 localhost:19332(如端点中所示)。为什么我可以从两个服务器进行设置? (并且它出现在两个服务器中)。我认为通常复制应该是从主到从的一种方式?

I understand that the RLEC using proprietary replication, which is different from the open source Redis.

这是不正确的 - RLEC 中的复制与开源的相同,不同的是集群是专有的。

What I want to achieve is if my master db went down, my app still will able to function normally by connecting to the replica db.

对于启用了复制的数据库,RLEC 会透明地为您管理故障转移——您需要做的就是连接到提供的端点。如果主节点发生故障,系统会自动故障转移到副本节点,您的应用程序需要做的就是在断开连接的情况下重试连接到同一端点。端点永远不会改变,总是指向当前的主节点。

  1. 此信息在"Shards" 视图中可用,或通过status 命令在rladmin 中可用。无论如何,端点的位置 而不是 表示主节点的位置 - 端点是将您的客户端连接到主节点的代理。

  2. 这就是标准 Redis 复制的工作原理。在 Redis 中,复制是一种方式,从 master 到 slave。然而,slaves 可以被写入,但是任何写入它们的东西都不会到达上游,并且可能被 master 的数据覆盖。无论如何,始终使用端点连接到您的数据库,永远不要在本地连接到分片 - 这可能会导致意外结果。

我会给你一些高水平的指导,如果你想获得更多信息,请联系我们支持@redislabs.com

对于真正的 HA,您的 RLEC 集群应该至少有 3 个节点,因此您应该向您的集群添加另一个节点。 创建 Redis 资源后,只需启用复制即可将其配置为高可用性。

您只需将您的应用程序连接到 UI 中提供的端点即可。如果主节点 Redis 出现故障,RLEC 将自动升级从节点并将您的应用程序请求重定向到新的主节点。

请注意,您确实需要配置 DNS,并且您的集群名称必须是 FQDN。

关于从两个节点在本地工作的 redis-cli -p 19332,正如我的同事@ItamarHaber 提到的,您正在通过代理与 Redis 资源通信,所有请求都由您的主 Redis 进程提供服务。