本文介绍 Azure 应用服务的可靠性支持,包括 可用性区域、 多区域部署和暂时性故障处理的区域内复原能力。
Azure 应用服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端 。 Azure 应用服务可将 Azure 的强大功能(包括安全性、负载均衡、自动缩放和自动管理功能)添加到应用程序。 若要了解 Azure 应用服务如何增强应用程序工作负载的可靠性和复原能力,请参阅为何使用应用服务?
部署 Azure 应用服务时,可以创建多个应用服务计划实例,该计划表示运行应用程序代码的计算辅助角色。 有关详细信息,请参阅 Azure 应用服务计划 。 尽管平台努力跨不同的容错域部署实例,但它不会自动将实例分散到多个可用性区域。
启用区域冗余,这要求使用高级 v3 或独立 v2 应用服务计划,并且至少具有计划的三个实例。 若要查看详细信息,请确保选择此页面顶部的相应层。
启用区域冗余,这要求应用服务计划至少使用三个实例。
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 经过短暂的时间后,它们就会自我纠正。 应用程序必须能够处理暂时性故障,处理方式通常是重试受影响的请求。
与任何云托管 API、数据库和其他组件通信时,所有云托管应用程序都应遵循 Azure 的暂时性故障处理指南。 要详细了解如何处理暂时性故障,请参阅暂时性故障处理建议。
Microsoft 提供的 SDK 通常处理暂时性故障。 由于你在 Azure 应用服务上托管了自己的应用程序,因此需要考虑如何避免引起暂时性故障,方法是确保:
部署计划的多个实例。 Azure 应用服务对你的计划实例执行自动更新和其他形式的维护。 如果某个实例变得运行不正常,服务可以自动将该实例替换为新的正常实例。 在替换过程中,可能会有一小段时间,之前的实例不可用,而新实例尚未准备好处理流量。 可以通过部署多个应用服务计划实例来缓解此行为的影响。
使用部署槽位。 Azure 应用服务部署槽位可实现应用程序的零停机部署。 使用部署槽位可最大程度减少部署和配置更改对用户的影响。 使用部署槽位还可以降低应用程序重启的可能性。 重启会导致暂时性故障。
避免纵向扩展或缩减。 应选择满足典型负载下的性能要求的层级和实例大小。 仅横向扩展实例数量来处理流量变化。 纵向扩展或缩减可能触发应用程序重启。
可用性区域是每个 Azure 区域内在物理上独立的数据中心组。 当某个区域发生故障时,服务可以转移至剩余区域中的一个。
有关 Azure 中可用性区域的详细信息,请参阅什么是可用性区域?
Azure 应用服务可以配置为区域冗余,这意味着资源分散在多个可用性区域中。 分散在多个区域中有助于生产工作负载实现复原能力和可靠性。 在应用服务计划上配置区域冗余时,使用该计划的所有应用都是区域冗余的。
使用区域冗余部署分布的实例使用以下规则确定。 即使在应用进行扩缩时,这些规则也适用:
最小应用服务计划实例计数为 3。
如果指定容量大于 3,并且实例数可被 3 整除,则这些实例会均匀分布。
超过 3*N 的任何实例计数将分布在剩余的一两个区域中。
注意
在某些情况下,工作负载托管在部署于两个可用性区域(而非三个可用性区域)中的缩放单元(也称为标记或计算群集)上。 对于这些情况,如果实例数能被 2 整除,则实例均匀地分布在两个可用区中。 超出 2*n 的任何实例计数都放置在其中一个区域中。
在应用服务平台为区域冗余的应用服务计划分配实例时,它使用由基础 Azure 虚拟机规模集提供的最佳化区域均衡。 当每个区域与其他所有区域相比,其所拥有的虚拟机数量相同,或者相差不超过一个时,应用服务计划被视为均衡。 有关详细信息,请参阅区域均衡。
对于未配置为区域冗余的应用服务计划,虚拟机实例无法针对可用性区域故障进行复原。 在该地区的任何区域发生故障时,它们可能会经历停机。
区域冗余应用服务计划要求使用高级 v2 或 v3 层,并且可以部署在任何支持可用性区域的区域中。 若要查看详细信息,请确保选择此页面顶部的相应层。
区域冗余应用服务计划可以部署在支持可用性区域的任何地区。
若要查看哪些区域支持适用于应用服务环境 v3 的可用性区域,请查看区域。
必须使用 Premium v2、Premium v3 或独立 v2 计划类型。 若要查看详细信息,请确保选择此页面顶部的相应层。
可用性区域仅在较新的应用服务缩放单元上受支持。 即使使用的是某个受支持的区域,如果规模单元不支持可用性区域,则在创建区域冗余应用服务计划时会收到错误。
分配给你的缩放单元基于你部署应用服务计划的资源组。 若要确保工作负荷位于支持可用性区域的缩放单元上,可能需要创建新的资源组,然后在新的资源组中创建新的应用服务计划和应用服务应用。
必须至少部署三个计划实例。
使用 Azure 应用服务高级版 v2 或高级版 v3 计划时,只要在应用服务计划中有三个或更多实例,就不会产生与启用可用性区域相关的额外费用。 根据应用服务计划 SKU、指定的容量以及根据自动缩放条件缩放到的任何实例收费。
如果启用可用性区域但指定的容量小于 3,则平台会强制执行最小实例计数 3。 平台会针对这 3 个实例向你收费。
应用服务环境 v3 具有针对区域冗余的特定定价模型。 有关应用服务环境 v3 的定价信息,请查看定价。
- 创建具有区域冗余的新应用服务计划。 若要部署新的区域冗余 Azure 应用服务计划,必须使用 Premium v2 或 Premium v3 计划类型。 若要查看详细信息,请确保选择此页面顶部的相应层。
- 创建具有区域冗余的新应用服务计划。 要部署新的区域冗余 Azure 应用服务计划,请在部署计划时选择“区域冗余”选项。
- 创建具有区域冗余的新应用服务计划。 要部署新的区域冗余 Azure 应用服务环境,请参阅创建应用服务环境。
迁移。 只能在创建新的应用服务计划时配置区域冗余。 如果现有应用服务计划不是区域冗余的,则需要将其替换为新的区域冗余计划。 无法将现有应用服务计划转换为使用可用性区域。
禁用区域冗余。 创建应用服务计划后,无法禁用区域冗余。 相反,你需要创建禁用了区域冗余的新计划,并删除旧计划。
为应对可用区故障,请考虑超量配置应用服务计划的容量。 超额预配使解决方案能够容忍一定程度的容量损失,并且仍然可以继续运行而不会降低性能。 要了解有关过度预配的更多信息,请参阅通过过度预配管理容量。
本部分介绍在配置 Azure 应用服务计划以实现区域冗余且所有可用性区域正常运行时,您可以预期的情况。
区域之间的流量路由:正常操作期间,流量会在所有可用性区域的所有可用应用服务计划实例之间进行路由。
区域之间的数据复制: 在正常作期间,应用程序文件系统中存储的任何状态都存储在区域冗余存储中,并在可用性区域之间同步复制。
本部分介绍了在为 Azure 应用服务计划配置区域冗余且发生可用性区域中断时所要预期的情况:
检测和响应:应用服务平台负责检测可用性区域中的故障并做出响应。 无需执行任何操作即可启动区域故障转移。
活动请求: 当可用性区域不可用时,连接到故障可用性区域中的应用服务计划实例的任何正在进行的请求将终止。 它们需要被重试。
流量重新路由:某个区域不可用时,Azure 应用服务会检测该区域中丢失的实例。 它会自动尝试查找新的替换实例。 然后,它会根据需要将流量分散到新实例。
如果配置了自动缩放,并且如果确定需要更多实例,则自动缩放还会向应用服务发出添加更多实例的请求。 有关详细信息,请参阅在 Azure 应用服务中纵向扩展应用。
注意
自动缩放行为与应用服务平台行为无关。 自动缩放实例计数规范不需要是三的倍数。
重要
在区域宕机情况下,无法保证请求增加实例的操作能够成功。 系统会尽最大努力对丢失的实例进行回填。 如果需要在可用性区域丢失时保证容量,则应创建并配置应用服务计划以应对丢失区域的情况。 为此,可以超量预配应用服务计划的容量。
非运行时间行为: 部署在区域冗余应用服务计划中的应用程序继续运行并处理流量,即使区域中的多个区域发生中断也是如此。 但是,在可用性区域中断期间,非运行时间行为仍会受到影响。 这些行为包括应用服务计划缩放、应用程序创建、应用程序配置和应用程序发布。
当可用性区域恢复时,Azure 应用服务会自动在恢复的可用性区域中创建实例,移除在其他可用性区域中创建的任何临时实例,并在实例之间正常路由流量。
Azure 应用服务平台管理区域冗余应用服务计划的流量路由、故障转移和故障恢复。 由于此功能是完全托管的,因此你无需启动或验证可用性区域故障流程。
Azure 应用服务是单地区服务。 如果该地区不可用,应用程序也会不可用。
为了确保应用程序不易受单一区域故障的影响,需要将应用程序部署到多个区域:
- 将您的应用程序部署到每个区域的实例。
- 配置负载均衡和故障转移策略。
- 跨地区复制数据,以便可以恢复最近的应用程序状态。
有关说明此方法的示例体系结构,请参阅:
要按照创建多地区应用的教程进行操作,请参阅教程:在 Azure 应用服务中创建高可用性多地区应用。
有关说明此体系结构的示例方法,请参阅使用应用服务环境进行高可用性企业部署。
使用基本层级或更高层级时,可以使用应用服务备份和还原功能将应用服务应用备份到文件。 有关详细信息,请参阅在 Azure 应用服务中备份和还原应用。
如果很难重新部署代码,或者将状态存储在磁盘上,则此功能非常有用。 对于大多数解决方案,不应依赖应用服务备份。 请使用本文中所述的其他方法来支持复原要求。
Azure 应用服务的服务级别协议 (SLA) 描述了服务的预期可用性。 它还描述了实现可用性预期必须满足的条件。 若要了解这些条件,请查看联机服务的服务级别协议 (SLA)。
部署区域冗余应用服务计划时,SLA 中定义的运行时间百分比会增加。