你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure DocumentDB 是一种完全托管NoSQL数据库服务,可与 MongoDB 兼容进行新式应用程序开发。 Azure DocumentDB 支持具有同步复制热备用副本和区域冗余的高可用性(HA)配置。 它还提供另一个Azure区域中的可选只读副本和具有时间点保留的自动备份,以防止意外数据丢失。
使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍如何使 Azure DocumentDB 能够应对各种潜在的中断和问题,包括暂时性故障、可用性区域中断、区域中断和服务维护。 它还介绍了备份行为,并提供有关 HA 和跨区域复制的关键信息。
提高可靠性的生产部署建议
有关提高群集可靠性的建议列表,请参阅 Azure DocumentDB 中高可用性(HA)和跨区域复制的最佳做法。
可靠性体系结构概述
本部分介绍从可靠性的角度来看,服务工作原理最相关的一些重要方面。 本部分介绍逻辑体系结构,其中包括部署和使用的某些资源和功能。 它还讨论了物理架构,该架构提供了服务内部运作方式的详细信息。
逻辑体系结构
部署的主要资源是Azure DocumentDB 群集。 对于每个群集,选择一个计算层并配置存储。 所选层确定可用于高可用性(HA)等可靠性功能的功能,它还会影响规划复原方案的容量的方式。
应用程序使用 连接字符串 和终结点连接到群集。 Azure DocumentDB 为读写操作提供连接终结点,并在配置时为只读副本群集提供终结点。 这些终结点允许应用程序继续使用稳定的连接模式,同时服务在后台管理故障转移行为。
在每个群集中,数据组织为 数据库、 集合和 文档。 此 MongoDB 兼容的数据模型是工作负荷级设计决策的基础,例如分片策略、读取和写入模式以及备份和还原范围。
物理体系结构
Azure DocumentDB 会在 分片 上运行你的集群,这些分片代表运行该服务的节点(虚拟机)。 您可以部署一个分片,或将其横向扩展为多个分片。 部署多个分片可提高缩放容量,但本身不提供 HA。
启用 HA 时,Azure DocumentDB 预配匹配的备用分片集。 每个主分片都有一个备用分片。 服务在每个主备用对之间同步复制数据,并在主分片发生故障时提升备用分片。 有关 HA 的详细信息,请参阅 Azure DocumentDB 中的高可用性。
Azure DocumentDB 使用Azure 存储实现分片持久性。 如果禁用 HA,则每个分片使用本地冗余存储(LRS)。 LRS 保留三份数据副本,但无法承受一个可用区的丢失。 有关 LRS 持续性详细信息,请参阅 冗余选项摘要。
有关详细信息,请参阅 Azure DocumentDB 中的可用性和灾难恢复(DR):幕后。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
Azure DocumentDB 与 MongoDB 协议兼容,因此应用程序通常使用 MongoDB 驱动程序进行连接。 你需要负责配置应用程序的驱动程序重试设置,以处理瞬时故障,尤其是故障转移期间发生的连接中断和短暂写入中断。 请遵循这些指南:
使用支持自动重试的 MongoDB 驱动程序来处理暂时性连接故障。
使用指数退避配置重试,并限制重试尝试次数。
如果可能,应将写入操作设计为幂等的,从而可以安全地重试这些操作。 有关幂等性的一般实现指南,请参阅 幂等使用者模式。
应对可用区故障的弹性
可用性区域 是 Azure 区域内物理上独立的数据中心组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
若要在 Azure DocumentDB 中使用可用性区域支持,请启用高可用性(HA)。 在支持可用性区域的区域中启用 HA 时,群集将变为区域冗余,因为 Azure DocumentDB 会将备用分片放置在与其主分片不同的可用性区域中。 除非备用分片失败,否则备用分片不会接收客户端请求。
如果禁用 HA,Azure DocumentDB 不会在另一个可用性区域中放置备用分片,因此可用性区域故障会使群集不可用。
此图显示了跨三个可用性区域的一个 Azure DocumentDB 群集。 两个主要物理分片位于可用性区域 1 中,其相应的备用物理分片位于可用性区域 2 中。 每个主分片和备用分片之间的箭头显示同步复制。 可用性区域 3 在此示例中不包含分片。
要求
区域支持:若要将可用性区域与 Azure DocumentDB 配合使用,请选择支持 Azure DocumentDB 和可用性区域的区域。 检查 可用产品(按区域 )并将其与 支持可用性区域的区域进行比较。
高可用性: 必须在群集上启用 HA。 HA 要求群集使用 M30(或更高)计算层。
Considerations
尽管某些 Azure DocumentDB API 包括对同一区域部署模式的引用,但 Azure DocumentDB 不支持同一区域 HA 部署。 该服务支持区域冗余 HA 部署。
跨区域的实例分布
Microsoft为群集选择两个可用性区域。 在区域冗余 HA 部署中,Azure DocumentDB 将所有主分片置于一个区域中,并在另一个区域中放置所有备用分片。
Cost
启用 HA 后,Azure DocumentDB 为每个主分片预配备用分片,这会增加群集的计算和存储成本。 在支持可用性区域的区域中,HA 也会使群集区域冗余。 在某些部署模式下,Azure DocumentDB 默认启用 HA。 对于生产工作负载,请保持 HA 处于启用状态。 对于开发和测试工作负荷,可以禁用 HA 以降低成本。 有关定价详细信息,请参阅 Azure DocumentDB 定价。
配置可用性区域支持
创建新的区域冗余Azure DocumentDB 群集:在支持可用性区域的区域中创建群集时,请启用 HA 以使群集区域冗余。 有关详细步骤,请参阅快速入门:使用 Azure 门户创建 Azure DocumentDB 群集。
在现有 Azure DocumentDB 群集上启用区域冗余:可以在现有群集上启用 HA。 在 Azure DocumentDB 群集上启用或禁用高可用性时,不会造成数据库停机。 有关详细步骤,请参阅缩放 Azure DocumentDB 群集。
所有区域正常时的行为
本部分介绍在支持可用性区域的区域中为 HA 配置 Azure DocumentDB 群集时的预期情况,并且所有区域都正常运行。
跨区域操作: 主分片为所有客户端请求提供服务。 其他可用性区域中的备用分片不会接收客户端请求,除非主服务器失败。
跨区域数据复制: 主分片和备用分片之间的复制是同步的。 在服务返回响应之前,写入将保留在主分片和备用分片上。
区域故障期间的行为
本节介绍:在支持可用性区域的某个区域中为 Azure DocumentDB 群集配置 HA 时,如果其中一个可用性区域发生中断,可能会出现什么情况。
检测和响应:Microsoft 会监视分片运行状况,并为你负责检测和故障转移操作。 如果主分片因区域中断而不可用,Azure DocumentDB 会自动提升备用分片,然后通过创建新的备用分片重新生成冗余。
通知: Microsoft不会在区域关闭时自动通知你。 但是,可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
活动中的请求: 在故障转移之前未获确认的进行中的请求可能会失败,必须由客户端重试。 如果应用程序处理 暂时性故障,这些重试通常会自动完成。
预期数据丢失:Azure DocumentDB 在主分片和备用分片之间同步复制数据,因此不会丢失任何数据。
预期的停机时间: 读取操作不需要停机。 对于写入操作,故障转移完成时可能会发生短暂的中断。 如果应用程序正确重试 暂时性故障 ,这通常显示为短暂的减速。
重新分发:连接字符串不会更改,因此客户端继续使用同一终结点。 该服务会自动将流量重定向到升级的备用分片,并重新生成新的备用分片。
区域恢复
当可用性区域恢复时,Azure DocumentDB 会自动还原群集使用的所有区域的正常操作。
针对局部区域故障进行测试
Azure DocumentDB 平台管理区域冗余群集的流量路由、故障转移和区域恢复。 无需启动或验证可用性区域故障进程。
对区域范围的故障的复原能力
在单个Azure区域中部署每个Azure DocumentDB 群集。 若要支持对区域故障的复原能力,请在另一个区域中添加一个副本群集来配置跨区域复制。
跨区域复制
Azure DocumentDB 支持通过副本群集进行跨区域复制。 副本群集在资源组中显示为单独的群集。 可以使用此副本群集进行灾难恢复和读取缩放。 Azure DocumentDB 自动并将数据更改从主群集复制到副本群集。
该图显示,一个应用程序通过读写连接字符串连接到主区域中的主集群。 虚线箭头表示从主集群到位于次要区域的读取副本集群的异步复制。
如果主要区域失败,则可以将副本群集提升为读写群集。 全局读写连接字符串会自动更新为指向已提升的集群。
此图显示了应用程序在提升后通过读写连接字符串连接到次要区域中的副本集群。 故障符号标记主群集、主要区域和以前的异步复制路径。
本部分汇总了跨区域复制的可靠性注意事项。 有关详细信息,请参阅管理 Azure DocumentDB 群集上的跨区域复制和同区域复制和Azure DocumentDB 中跨区域复制和同区域复制的最佳做法。
区域之间的故障转移
Azure DocumentDB 支持三种升级模式:
强制提升:立即将副本群集提升为可接受写入操作,并通过全局读写连接字符串重定向传入的写入流量。 此模式可最大程度地减少停机时间,但可能会导致数据丢失,因为它会丢失任何未复制的写入。
服务管理的故障转移: 可以将群集配置为使用服务管理的故障转移。 Microsoft监视主群集,并在主群集运行不正常时自动触发强制升级。
正常提升:可防止数据丢失,但在复制未复制的写入内容时需要一些停机时间。 正常提升要求两个群集都处于正常状态,因此在区域发生故障期间无法执行此操作。
有关详细信息,请参阅 Azure DocumentDB 中的跨区域故障转移模式。
要求
区域支持:可以在支持 Azure DocumentDB 的所有Azure区域中使用跨区域复制。
计算层: 跨区域复制需要 M30 计算层或更高版本。
Considerations
网络访问: 副本群集不会从主群集继承网络设置。 在副本集群上分别配置防火墙规则或专用终结点,并在故障转移之前测试连通性。 有关详细信息,请参阅 连续写入、群集副本上的读取操作和连接字符串。
功能支持: 副本群集不支持时间点还原(PITR)或区域内 HA。
如果在主群集上启用了 HA,则负责在升级的群集上重新启用 HA。
有关详细信息,请参阅 Azure DocumentDB 服务限制和配额。
Cost
跨区域复制会增加副本群集的计算和存储资源的成本。 跨区域数据传输费用也适用。 有关定价详细信息,请参阅 Azure DocumentDB 定价和带宽定价。
配置多区域支持
创建副本群集: 若要启用跨区域复制,请从主群集创建副本群集。 可以在创建主群集或之后创建副本群集。 有关步骤,请参阅在 Azure DocumentDB 群集上管理跨区域和同一区域复制。
配置自动故障转移:如果希望Azure在主要区域的中断期间自动升级副本,请启用服务管理的故障转移。 有关详细信息,请参阅 “启用服务管理的故障转移”。
注释
Microsoft通常仅在极端情况下才会触发由服务管理的故障转移,例如整个区域发生中断或大量客户受到影响。 在触发故障转移之前可能存在延迟。 如果需要快速还原可用性,建议使用客户发起的强制提升来管理故障转移过程。
当所有区域都正常时的行为
本部分介绍为跨区域复制配置 Azure DocumentDB 群集时的预期情况,并且所有区域都正常运行。
跨区域操作: 主群集提供所有读写流量。 副本群集提供只读流量,可用于横向扩展读取工作负荷或将读取流量保留到特定区域。 全局读写连接字符串始终指向当前可写的集群,因此客户端无需跟踪哪个区域是主区域。
跨区域数据复制: 主群集与副本群集之间的复制是异步的。 写入会先在主集群上提交,并在复制到副本集群之前向客户端确认。 此方法可防止跨区域网络延迟影响写入性能。 由于复制是异步的,因此主群集和副本群集之间应存在一些复制滞后时间,在强制故障转移期间可能会丢失任何未复制的写入。
区域故障期间的行为
本节介绍当您为 Azure DocumentDB 群集配置跨区域复制且主群集所在区域发生中断时,可能会出现的情况。
检测和响应: 检测中断故障并作出响应的责任取决于群集所使用的故障转移类型。
- 如果启用了由服务管理的故障转移,Azure DocumentDB 会检测到服务中断,并自动将副本群集强制提升为主群集。
- 如果未启用服务管理的故障转移,你就需要负责检测服务中断并触发强制提升。
有关详细信息,请参阅 Azure DocumentDB 中的跨区域故障转移模式。
通知: Microsoft不会在区域关闭时自动通知你。 但是,可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
活动请求: 对失败的主要区域的任何活动请求都可能会失败。 故障转移完成后,应用程序应针对升级的群集重新连接并重试。
预期数据丢失: 发生区域故障时,故障转移是非计划内的,因此由于复制是异步进行的,尚未复制的写入可能会丢失。
预期的停机时间: 总体停机时间取决于检测时间、故障转移模式和客户端重新连接行为。
对于客户发起的强制升级,总停机时间包括检测中断和启动响应过程所需的时间,以及完成升级所需的时间。
启动促销后,它通常会在几分钟内完成。
重新分配:全局读写连接字符串会在提升后自动指向已提升的群集。 使用特定于群集的连接字符串的应用程序可能需要配置更新,以便将流量定向到正常的群集。
区域恢复
Azure DocumentDB 在恢复后不会自动故障回复到原始区域。 若要将写入操作返回到原始区域,请在重新建立首选拓扑后执行另一个升级。 使用正常提升,以避免在故障回复期间发生数据丢失。 平滑升级需要短暂的停机时间,你可以选择在合适的时间执行,例如在维护窗口期间。 有关更多信息,请参阅触发正常提升。
针对区域故障进行测试
通过在受控环境中提升副本群集来定期测试灾难恢复过程。
使用强制提升模拟中断行为。 此测试可能会导致数据丢失,因此请考虑在非生产环境中运行此测试。 有关详细信息,请参阅 “触发强制升级”。
如果想避免数据丢失,请在计划内的切换演练中使用正常提升。 有关更多信息,请参阅触发正常提升。
备份和还原
复制和支持可用性区域有助于在基础结构故障期间使群集保持可用。 Azure DocumentDB 会自动进行连续备份,这可以通过在意外删除或修改数据后启用时间点恢复(PITR)来解决不同的风险。 Azure DocumentDB 执行备份不会影响数据库操作的性能或可用性。 有关复制和备份如何应对不同风险的详细信息,请参阅 冗余、复制和备份。
Azure DocumentDB 将备份与源数据分开存储。 在支持可用性区域的区域中,该服务将备份快照存储在三个可用性区域中。 Azure DocumentDB 管理这些备份,并且无法导出这些备份。 该服务将活动群集的备份保留 35 天,活动可突发层(M10、M20、M25)的备份为 7 天,删除的群集保留 7 天。
可以将备份恢复到新群集。 执行此操作后,需要执行一组还原后任务。
有关详细信息,请参阅 Azure DocumentDB 中的还原群集。
服务维护期间的系统弹性能力
Microsoft定期应用服务更新并执行其他维护。 Azure平台会自动处理这些活动,确保维护是无缝且透明的。 除非通过 Azure 服务运行状况计划内维护事先通知,否则维护事件期间预计不会出现停机。
计划内维护事件仍可能导致客户端操作出现短暂的暂时性故障。 应用程序应通过使用 暂时性故障复原中的重试指南来处理这些事件。
服务级别协议
Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 联机服务的 SLA。
对于 Azure DocumentDB,可用性 SLA 仅在群集启用了高可用性(HA)时才适用。 不同的可用性 SLA 适用于以下配置:
已启用 HA 的群集,这些群集使用跨区域复制功能跨越多个 Azure 区域。
在单个区域中启用了 HA 的群集。