高可用性和灾难恢复

与任何云系统一样,可能会发生计划外中断,导致虚拟机 (VM) 实例、可用性区域或者整个 Azure 区域的故障。 我们建议客户制定计划来处理区域或地区性中断。

本文向客户提供了为 Azure Cache for Redis 创建业务连续性和灾难恢复计划所需的信息。

“标准”和“高级”层级中提供了各种高可用性选项:

选项 说明 可用性 标准 高级
标准复制 单个数据中心中具有自动故障转移功能的双节点复制配置 99.9%(查看详细信息
导入/导出 缓存中数据的时间点快照。 99.9%(查看详细信息 -
持久性 定期将数据保存到存储帐户。 99.9%(查看详细信息 -

用于高可用性的标准复制

适用层:标准、高级

Azure Cache for Redis 在“标准”或“高级”层中具有高可用性体系结构,确保即使发生影响基础虚拟机 (VM) 的中断,也可以使托管实例正常运行。 无论是计划内中断还是计划外中断,Azure Cache for Redis 都能提供比在单个 VM 上托管 Redis 可实现的更大百分比的可用率。

默认情况下,在“标准”或“高级”层级中,Azure Cache for Redis 在一对 Redis 服务器上运行。 这两个服务器托管在专用 VM 上。 开源 Redis 只允许一台服务器处理数据写入请求。

使用 Azure Cache for Redis 时,一个服务器是主节点,另一个服务器是副本。 预配服务器节点后,Azure Cache for Redis 可向其分配主要角色和副本角色。 主节点通常负责为来自客户端的写入和读取请求提供服务。 在执行写入操作时,它会向其内部内存提交一个新密钥和密钥更新,并立即回复客户端。 它以异步方式将操作转发给副本。

Data replication setup

注意

通常,Azure Cache for Redis 客户端应用程序与缓存中的主节点通信,以获取所有读取和写入请求。 某些客户端可以配置为从副本节点进行读取。

如果缓存中的主节点不可用,副本会自动将自己提升为新的主节点。 此过程称为故障转移。 副本会等待足够长的时间才去接管,以免出现主节点快速恢复的情况。 发生故障转移时,Azure Cache for Redis 会预配新的 VM,并将其作为副本节点加入到缓存中。 副本执行与主节点的完整数据同步,这样它就会有缓存数据的另一个副本。

主节点在计划内维护活动(例如 Redis 软件或操作系统更新)期间可能会停止服务。 它还可能因为计划外事件(例如底层硬件、软件或网络故障)而停止工作。 Azure Cache for Redis 的故障转移和修补提供了有关故障转移类型的详细说明。 Azure Cache for Redis 在其生存期内会经历许多故障转移。 高可用性体系结构的设计能使缓存中的这些更改对其客户端尽可能透明。

此外,Azure Cache for Redis 在高级层中提供更多副本节点。 可以为多副本缓存配置最多三个副本节点。 具有更多副本通常可提高复原能力,因为你的节点会为主节点提供备份。 即使有更多副本,Azure Cache for Redis 实例仍可能会受到数据中心的严重影响。

持久性

适用的层:高级

由于缓存数据是存储在内存中的,因此,如果多个节点出现罕见的计划外故障,会导致所有数据被删除。 为了避免数据完全丢失,Redis 持久性允许定期创建内存中数据的快照,并将其存储到存储帐户。 如果在多个节点中发生故障,导致数据丢失,缓存会从存储帐户加载快照。 有关详细信息,请参阅为 Azure Cache for Redis 高级实例配置数据持久性

用于持久性的存储帐户

请考虑选择异地冗余存储帐户,以确保持久化数据的高可用性。 有关详细信息,请参阅 Azure 存储冗余

导入/导出

适用的层:高级

Azure Cache for Redis 支持导入和导出 Redis 数据库 (RDB) 文件的选项,以提供数据可移植性。 这让你可以将数据导入 Azure Cache for Redis,或者使用 RDB 快照将数据从 Azure Cache for Redis 导出。 高级缓存中的 RDB 快照将导出到 Azure 存储帐户中的 blob。 可以创建脚本来定期触发将数据导出到存储帐户。 有关详细信息,请参阅在 Azure Cache for Redis 中导入和导出数据

用于导出的存储帐户

请考虑选择异地冗余存储帐户,以确保导出数据的高可用性。 有关详细信息,请参阅 Azure 存储冗余

删除并重新创建缓存

适用层:标准、高级

如果遇到区域性服务中断,请考虑在其他区域中重新创建缓存,并更新应用程序以连接到新缓存。 必须记住,在区域性服务中断期间,数据将丢失。 在发生数据丢失时,你的应用程序代码应具备可复原性。

还原受影响的区域后,不可用的 Azure Cache for Redis 会自动还原并再次可供使用。 有关将缓存移到其他区域的更多策略,请参阅将 Azure Cache for Redis 实例移到其他区域

后续步骤

详细了解如何配置 Azure Cache for Redis 高可用性选项。