你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 托管 Redis 实现高可用性和灾难恢复(预览版)

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

本文向客户提供了为 Azure 托管 Redis(预览版)创建业务连续性和灾难恢复计划所需的信息。

高可用性选项:

选项 说明 可用性
标准复制 单个数据中心中具有自动故障转移功能的双节点复制配置 99.9%(查看详细信息
区域冗余 可用性区域中具有自动故障转移功能的多节点复制配置 99.99%(请参阅详细信息
异地复制 两个区域中的链接缓存实例,具有用户控制的故障转移 活动(请参阅详细信息
导入/导出 缓存中数据的时间点快照。 99.9%(查看详细信息
持久性 定期将数据保存到存储帐户。 99.9%(查看详细信息

用于高可用性的标准复制

建议用于:高可用性

Azure 托管 Redis 具有高可用性体系结构,确保即使发生影响基础虚拟机 (VM) 的中断,也可以使托管实例正常运行。 无论是计划内中断还是计划外中断,Azure 托管 Redis 都能提供比在单个 VM 上托管 Redis 时更大的百分比可用率。 默认情况下,Azure 托管 Redis 在一对 Redis 服务器上运行。 这两个服务器托管在专用 VM 上。

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

数据复制设置

如果缓存中的主节点不可用,副本会自动将自己提升为新的主节点。 此过程称为故障转移。 故障转移就是两个节点(主/副本)在转换角色(副本/主),其中一个节点可能会脱机几分钟。 在大多数故障转移中,主节点和副本节点会协调交接,没有主节点的时间几乎为零。

前主节点会短暂脱机,以便从新主节点接收更新。 然后,现在的副本节点会重新联机,并重新联接已完全同步的缓存。 关键是节点不可用是暂时的,节点会重新联机。

当主节点需要关闭以进行维护时,典型的故障转移顺序如下所示:

  1. 主节点和副本节点协商出一个协调的故障转移并互换角色。
  2. 副本节点(以前的主节点)脱机进行重启。
  3. 几秒钟或几分钟后,副本节点重新联机。
  4. 副本节点从主节点同步数据。

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

区域冗余

建议用于:高可用性、灾难恢复 - 区域内

默认情况下,Azure 托管 Redis 支持区域冗余配置。 区域冗余缓存会自动将其节点置于同一区域中的不同 Azure 可用性区域上。 当一个区域发生故障时,其他区域中的缓存节点可以用来保持缓存的正常运行。 这消除了数据中心或可用性区域中断造成的单一故障点,并提高了缓存的总体可用性。

区域故障体验

当数据节点不可用或发生网络拆分时,会发生类似于标准复制中描述的故障转移。 群集使用基于仲裁的模型来确定哪些未受影响的节点将参与新的仲裁。 它还根据需要将这些节点中的分区副本提升为主分区。

区域可用性

区域冗余缓存在以下区域中可用:

美洲 欧洲 中东 非洲 亚太区
加拿大中部* 北欧 澳大利亚东部
美国中部* 英国南部 印度中部
美国东部 西欧 东南亚
美国东部 2 日本东部*
美国中南部 东亚*
美国西部 2
美国西部 3
Brazil South

持久性

建议用于:数据持续性

由于缓存数据是存储在内存中的,因此,如果多个节点出现罕见的计划外故障,会导致所有数据被删除。 为了避免完全丢失数据,Redis 持久化可让你定期创建内存中数据的快照,并将其存储在直接附加到缓存实例的托管磁盘上。 如果数据丢失,缓存数据将使用托管磁盘上的快照自动还原。 有关详细信息,请参阅配置 Azure 托管 Redis 实例的数据持久化

导入/导出

建议用于:灾难恢复

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

用于导出的存储帐户

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

活动异地复制

建议用于:高可用性、灾难恢复 - 多区域

异地复制是跨多个 Azure 区域链接 Azure 托管 Redis 实例的机制。 Azure 托管 Redis 支持一种更高级的异地复制形式(称为活动异地复制),可在多个区域之间提供更高的可用性和跨区域灾难恢复。 Azure 托管 Redis 软件使用无冲突复制数据类型来支持对多个缓存实例的写入、合并更改以及解决冲突。 你可以联接不同 Azure 区域中的最多五个缓存实例,形成一个异地复制组。

使用此类缓存的应用程序可以通过相应的终结点来读取和写入任何地理位置分散的缓存实例。 应用程序应使用距离每个应用程序实例最近的缓存实例,以实现最低的延迟。 有关详细信息,请参阅为 Azure 托管 Redis 实例配置活动异地复制

如果复制组中其中一个缓存的区域出现故障,应用程序需要切换到另一个可用的区域。

当复制组中的缓存不可用时,建议监视同一复制组中其他缓存的内存使用情况。 当其中一个缓存出现故障时,复制组中的所有其他缓存将开始保存它们无法与出现故障的缓存共享的元数据。 如果可用缓存的内存使用率在其中一个缓存出现故障后开始高速增长,请考虑取消链接复制组中不可用的缓存。

有关强制取消链接的详细信息,请参阅发生区域中断时强制取消链接

删除并重新创建缓存

如果遇到区域性服务中断,请考虑在其他区域中重新创建缓存,并更新应用程序,改为连接到新缓存。 请务必了解,除非使用活动异地复制,否则在区域性服务中断期间,数据会丢失。 在发生数据丢失时,你的应用程序代码应具备可复原性。

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

后续步骤