Redis Enterprise 是一个自托管的实时数据平台,可大规模释放 Redis 的全部潜力,确保五九 (5-9s) 的高可用性。
Redis Enterprise 的高可用性基于复制构建,但自动故障转移、备份和恢复也影响满足应用程序高可用性服务级别协议的能力。
复制是存储数据相同副本到多个 Redis Enterprise 服务器上的过程。Redis Enterprise 复制确保数据安全,并允许应用程序不间断运行,没有停机时间,保持高可用性,即使您的一个或多个服务器发生故障。
与大多数 NoSQL 数据库部署一样,开源 Redis 使用三个副本确保高可用性。从高层面来看,第一个副本通常用于存储数据集,第二个用于故障转移,第三个在网络分裂事件发生时作为决定者。由于 DRAM 价格昂贵,维护三个副本的成本可能非常高。Redis Enterprise 允许您仅使用两个副本就拥有完整的高可用性 (HA) 系统。您的决定者是在节点级别通过使用集群中奇数个节点来确定的。下面的示例比较了在 Amazon Web Services 上运行一个 90GB 高可用性架构的开源 Redis 数据集(使用三个副本)与使用两个副本和仲裁节点的 Redis Enterprise 集群的基础设施成本
Redis Enterprise 复制基于主服务器和副本上的无盘复制(纯内存复制),提供完整的冗余,如下图所示
此外,Redis Enterprise 对其核心操作使用 PSYNC2,因此之后会为主机计划故障转移或分片迁移操作维护活动复制链接。
Redis Enterprise 集群提供容错性和弹性。在主服务器或节点发生故障的情况下,Redis Enterprise 的自愈合过程会自动检测硬件故障,选择一个副本作为替代,并将该副本提升为新的主服务器。Redis Enterprise 还会自动切换所有客户端连接。整个故障转移过程在个位数秒内完成,无需手动干预。Redis Enterprise 集群使用两个看门狗进程来检测故障
这些看门狗进程是分布式集群管理器实体的一部分,位于集群的每个节点上。故障检测需要由在集群内部运行的实体管理,以避免出现如下图左侧所示的情况。在此示例中,看门狗实体位于网络分裂的错误一侧,无法触发故障转移过程
一旦检测到故障事件,Redis Enterprise 集群会自动且透明地运行一组内部分布式进程,将相关的分片和端点(如果需要)故障转移到健康的集群节点。如有必要,它们还会通过不同的代理重路由用户流量。
Redis Enterprise 集群为嘈杂(公共云)和安静(虚拟私有云、本地)环境提供了现成的高可用性配置文件。 我们发现,过于激进地触发故障转移可能会导致稳定性问题。另一方面,在安静的网络环境中,可以轻松调整 Redis Enterprise 集群,以在所有故障场景中支持稳定的个位数秒(<10 秒)故障转移时间。
借助 Redis Enterprise,您可以从 AWS、Google Cloud 和 Microsoft Azure 的约 90 个区域中选择。这确保您的应用程序靠近用户,以提供亚毫秒级的响应时间。
Redis Enterprise 还旨在在多区域、多区域和多云 Redis Enterprise 集群中提供不断增强的地理弹性。Redis Enterprise 支持多可用区/机架集群配置。在此模式下,集群节点会标记其部署所在的可用区/机架,Redis Enterprise 确保同一分片的主服务器和副本 Redis 进程永远不会托管在同一可用区/机架中的节点上。在多可用区/机架环境中运行 Redis Enterprise 需要满足以下条件
此处显示了 Redis Enterprise 在云端的多可用区配置示例
如您所见,此示例满足上述所有条件
借助多云集群实现 Redis Enterprise 地理弹性
云提供商中断的严重程度各不相同,从暂时的容量限制到可能摧毁应用程序部署的全面中断。通过跨多个云分发数据,组织可以提高数据库和应用程序的弹性并防止数据丢失。Redis Enterprise 多云集群允许您的 Redis Enterprise 集群跨不同公共云提供商的多个区域进行分发。通过多云集群,您可以利用 AWS、Google Cloud 和 Azure 原生的独特工具和服务,而无需承担跨云管理数据复制和迁移的复杂操作。您可以以低延迟访问更多云区域来扩展您的覆盖范围,并满足区域内数据主权要求,同时不牺牲弹性。Redis Enterprise 会自动在云之间分发您的数据,以增强容错能力,确保应用程序的高可用性。
除了数据库弹性外,您可能还需要一个计划,以在多云环境中最大化应用程序弹性和容错能力。应用程序应分布在多个云中,以便在需要时进行故障转移,从而满足高可用性系统要求。
观看我们最近关于高可用性的技术讲座
下一节 ► 持久化 Redis