开始学习RedisLabs Enterprise Cluster,但我对如何使用RLEC实现高可用性感到困惑。我理解RLEC使用专有复制,这与开源Redis不同。我想要实现的是,如果我的主数据库发生故障,我的应用程序仍然可以通过连接到副本数据库来正常运行。
我的问题是:
答案 0 :(得分:2)
我理解RLEC使用专有复制,这与开源Redis不同。
这是不正确的 - RLEC中的复制与开源复制相同,它是不同且专有的集群。
我想要实现的是,如果我的主数据库发生故障,我的应用程序仍然可以通过连接到副本数据库来正常运行。
对于启用了复制的数据库,RLEC会透明地为您管理故障转移 - 您只需连接到提供的端点即可。如果主服务器出现故障,系统会自动故障转移到副本服务器,而您的应用程序需要做的就是在断开连接的情况下重试连接到同一个端点。端点永远不会改变,总是会导致当前的主设备。
此信息可在“Shards”视图中找到,或通过rladmin
命令在status
中获得。无论如何,端点的位置不表示主设备 - 端点是将客户端连接到主设备的代理。
这是标准Redis复制的工作原理。在Redis中,复制是从主服务器到从服务器的一种方式。但是,可以写入从站,但写入它们的任何内容都不会进入上游,并且可能会被主站的数据覆盖。无论如何,始终使用端点连接到您的数据库,并且永远不会在本地连接到分片 - 这可能会导致意外结果。
答案 1 :(得分:2)
我会给你几个高级指针,如果你想获得更多信息,请通过support@redislabs.com与我们联系
对于真正的HA,您的RLEC群集应至少有3个节点,因此您应该向群集添加另一个节点。 创建Redis资源后,只需启用复制即可将其配置为HA。
您只需将应用程序连接到UI中提供的端点即可。如果具有主Redis的节点将关闭,RLEC将自动升级从站并将您的应用程序请求重定向到新主站。
请注意,您确实需要配置DNS,并且您的群集名称必须是FQDN。
关于从两个节点本地工作的redis-cli -p 19332
,正如我的同事@ItamarHaber所提到的,您正在通过代理与Redis资源进行通信,所有请求都由您的主Redis进程提供。