Azure 应用服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端 。 应用服务与 Azure 集成,为应用程序提供安全性、负载均衡、自动缩放和自动化管理。 本文介绍应用服务中的可靠性支持。 它通过可用性区域和多区域部署涵盖区域内部复原能力。
有关应用服务环境中的可靠性支持的详细信息,请参阅应用服务环境中的可靠性。
可靠性是你和Microsoft之间的共同责任。 可以使用本指南确定哪些可靠性选项满足特定业务目标和运行时间目标。
生产部署建议
若要了解如何部署应用服务以支持解决方案的可靠性要求,以及可靠性如何影响体系结构的其他方面,请参阅 Azure 架构良好的框架中应用服务(Web 应用)的体系结构最佳做法。
可靠性体系结构概述
创建应用服务 Web 应用时,请指定运行应用的应用服务计划。
应用服务计划定义一组运行 Web 应用的计算资源。 所有 Web 应用都必须在计划内运行。 可以缩放计划以在多个 VM 实例(也称为“工作线程”)上运行。 这些实例提供运行应用代码的计算资源。 单个应用服务计划可以托管多个应用。 所有应用都在同一个共享 VM 实例集上运行。
应用服务提供以下冗余功能:
跨容错域分布:在平台级别,Azure 会自动在 Azure 区域内的容错域之间分配应用服务计划的 VM 实例。 此分发通过将共用同一电源和网络交换机的 VM 归为一组,将本地化硬件故障的风险降到最低。
跨可用性区域分布:如果在受支持的应用服务计划中启用区域冗余,Azure 会在该区域内的可用性区域之间分发实例。 如果发生区域中断,此配置可提供更高的复原能力。 有关区域冗余的详细信息,请参阅可用性区域支持。
应用缩放:将应用服务计划配置为运行多个 VM 实例时,计划中的所有应用默认在所有实例上运行。 如果配置计划进行自动缩放,则所有应用会根据自动缩放设置一起横向扩展。 但是,可以使用每应用缩放来自定义运行特定应用的计划实例数。
缩放单元:在内部,应用服务在称为缩放单元(也称为标记)的平台基础结构上运行。 缩放单元包括托管和运行应用服务所需的所有组件,包括计算、存储、网络和负载均衡。 Azure 管理缩放单元,以确保均衡的工作负荷分发、执行日常维护和维护整体平台可靠性。
某些功能可能仅适用于特定的缩放单元。 例如,某些应用服务缩放单元可能支持区域冗余,而同一区域中的其他缩放单元则不支持。
暂时性故障
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
Microsoft 提供的 SDK 通常处理暂时性故障。 由于在应用服务上托管自己的应用程序,因此请采取措施减少暂时性故障的可能性:
在计划中部署多个实例。 应用服务对计划中的实例执行自动更新和其他形式的维护。 如果某个实例变得运行不正常,服务可以自动将该实例替换为新的正常实例。 在替换过程中,可能会有一段短时间,上一个实例不可用,而新实例尚未准备好处理流量。 若要缓解这些影响,请部署应用服务计划的多个实例。
使用部署槽位。 应用服务 部署槽位 可实现应用程序的零停机时间部署。 使用部署槽位最大程度地减少对用户的部署和配置更改的影响。 部署槽位也会降低应用程序重启的可能性。 重启应用程序会导致暂时性故障。
避免纵向扩展或纵向缩减。 这些操作会更改分配给每个实例的 CPU、内存和其他资源,并且可以触发应用程序重启。 应选择满足典型负载下的性能要求的层级和实例大小。 若要横向扩展和缩减,请动态添加和移除实例以处理流量变化。
可用性区域支持
可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以转移至剩余区域中的一个。
对于 高级 v2 到 v3 层,可以将应用服务配置为 区域冗余,这意味着资源分布在多个可用性区域。 跨多个区域分布有助于生产工作负载实现复原能力和可靠性。 在应用服务计划中配置区域冗余时,使用该计划的所有应用都会成为区域冗余。
区域支持
- 对于应用服务 高级 v2 和 v3 计划,支持 可用性区域的任何区域都支持区域冗余。
Requirements
若要启用区域冗余,必须满足以下要求:
使用 高级 v2 至 v3 计划类型。
在计划中部署至少两个实例。
使用支持可用性区域的缩放单元。 创建应用服务计划时,该计划将基于计划所在的资源组分配给缩放单元。 如果缩放单元不支持可用性区域,则需要在新资源组中创建新计划。
若要确定应用服务计划的缩放单元是否支持区域冗余,请参阅检查应用服务计划的区域冗余支持。
跨区域的实例分布
创建区域冗余应用服务计划时,Azure 将计划实例分发到区域中的各可用性区域。 即使一个区域遇到中断,此分发也可确保应用仍然可用。
区域冗余部署中的实例分发遵循特定规则。 在应用进行横向扩展和缩减时,这些规则也适用:
最小实例数: 应用服务计划必须至少有两个实例才能实现区域冗余。
计划支持的最大可用性区域: Azure 确定计划可以使用的可用性区域数,称为 maximumNumberOfZones。 若要查看特定计划可以使用的可用性区域数,请参阅检查应用服务计划的区域冗余支持。
实例分发:启用区域冗余后,Azure 会自动在多个可用性区域中分发计划实例。 分发基于以下规则:
如果实例数超过 maximumNumberOfZones 并均分,Azure 会将实例均匀分发到各个区域。
如果实例数未均分,Azure 会将剩余实例分发到剩余区域。
当应用服务平台为区域冗余的应用服务计划分配实例时,它使用基础 Azure 虚拟机规模集提供的尽力区域均衡。 如果每个区域具有相同数量的 VM 或与其他所有区域差一个实例,则计划是均衡的。 有关详细信息,请参阅区域均衡。
物理区域放置: 可以查看用于每个应用服务计划实例 的物理可用性区域 。 有关详细信息,请参阅 查看应用服务计划的物理区域。
Considerations
对于 高级 v2 到 v3 计划,可用性区域中断可能会影响 Azure 应用服务的某些方面,即使应用程序继续为流量提供服务。 这些行为包括应用服务计划缩放、应用程序创建、应用程序配置和应用程序发布。
在应用服务 高级 v2 到 v3 计划中启用区域冗余时,还可以在平台更新期间提高复原能力。 有关详细信息,请参阅服务维护期间的可靠性。
对于未配置为区域冗余的应用服务计划,基础虚拟机 (VM) 实例无法针对可用性区域故障进行复原。 在该地区的任何区域发生故障时,它们可能会经历停机。
Cost
使用应用服务 高级 v2 到 v3 计划时,如果有多个实例,则启用可用性区域不会增加成本。 费用基于应用服务计划 SKU、指定的容量以及根据自动缩放条件缩放到的任何实例。
如果启用可用性区域但指定容量小于 2,则平台将强制实施最小实例计数 2。 平台会向你收取这两个实例的费用。
配置可用性区域支持
创建新的区域冗余应用服务计划。 有关详细信息,请参阅创建包含区域冗余的新应用服务计划。
在现有应用服务计划中启用或禁用区域冗余。 有关详细信息,请参阅设置现有应用服务计划的区域冗余。
容量计划和缩放
为应对可用区故障,请考虑超量配置应用服务计划的容量。 此方法允许解决方案容许某些容量丢失并继续正常运行,而不会降低性能。 有关详细信息,请参阅使用过度预配管理容量。
常规操作
以下列表描述了当为应用服务计划配置了区域冗余并且所有可用性区域均可运行时应发生的情况:
区域之间的流量路由:正常操作期间,流量会在所有可用性区域的所有可用应用服务计划实例之间进行路由。
区域之间的数据复制: 在正常作期间,应用程序文件系统中存储的任何状态都存储在区域冗余存储中,并在可用性区域之间同步复制。
区域关闭体验
即使应用程序继续提供流量,可用性区域中断也可能会影响应用服务的某些方面。 这些行为包括应用服务计划缩放、应用程序创建、应用程序配置和应用程序发布。
以下列表描述了当为应用服务计划配置了区域冗余并且一个或多个可用性区域不可用时应发生的情况:
检测和响应: 应用服务平台会自动检测可用性区域中的故障并启动响应。 无需手动干预即可启动区域故障转移。
通知:通过 Azure 服务运行状况和 Azure 资源运行状况可以监视区域故障事件。 针对这些服务设置警报,以接收有关区域级别问题的通知。
活动请求:连接到故障可用性区域中的应用服务计划实例的任何正在进行的请求将终止。 重试这些请求。
流量重新路由:应用服务从该区域检测丢失的实例,并尝试查找新的替换实例。 应用服务找到替换项后,会根据需要跨新实例分发流量。
如果自动缩放已配置并确定需要更多实例,它将从应用服务请求实例。 自动缩放行为与应用服务平台行为无关。 因此,实例计数规范不需要是二的倍数。 有关详细信息,请参阅在应用服务中扩展应用和自动缩放概述。
Important
在区域发生故障的情况下,Azure 不保证可以成功请求更多实例。 平台会尝试尽最大努力回填丢失的实例。 如果在可用性区域故障期间需要有保证的容量,请创建和配置应用服务计划以通过过度预配容量来应对区域损失的情况。
非运行时间行为:即使可用性区域遇到服务中断,区域冗余应用服务计划中的应用程序也会继续运行并提供流量。 但是,在可用性区域中断期间,非运行时间行为可能会受到影响。 这些行为包括应用服务计划缩放、应用程序创建、应用程序配置和应用程序发布。
区域恢复
当可用性区域恢复时,应用服务会自动在恢复的可用性区域中创建实例,删除在其他可用性区域中创建的任何临时实例,并像往常一样路由实例之间的流量。
对区域故障进行测试
Azure 应用服务平台管理区域冗余应用服务计划的流量路由、故障转移和故障恢复。 此功能是完全托管的,因此无需启动或验证可用性区域故障流程。
多区域支持
应用服务是单区域服务。 如果该地区不可用,应用程序也会不可用。
替代的多区域方法
若要降低影响应用程序的单区域故障的风险,可以跨多个区域部署计划。 以下步骤有助于增强复原能力:
- 将应用程序部署到每个地区的方案。
- 配置负载均衡和故障转移策略。
- 跨区域复制数据,以便恢复最后一个应用程序状态。
请考虑以下相关资源:
Backups
使用基本层级或更高层级时,可以使用应用服务备份和还原功能将应用服务应用备份到文件。
当重新部署代码很困难或者将状态存储在磁盘上时,这些功能会有所帮助。 大多数解决方案不应只依赖于备份。 请改用本指南中的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。
Important
从 2028 年 3 月 31 日起,Azure 应用服务自定义备份 将不再支持备份链接的数据库。 有关详细信息,请参阅 弃用链接的数据库备份 。
请改用链接数据库的本机备份和还原工具。 有关详细信息,请参阅 在应用服务中备份和还原应用。
服务维护期间的可靠性
应用服务执行常规服务升级和其他维护任务。 为了在升级期间保持预期容量,平台会在升级过程中自动添加应用服务计划的额外实例。
启用区域冗余。 在应用服务计划中启用区域冗余时,还可以在平台更新期间提高复原能力。 更新域由更新期间脱机的 VM 集合组成,它们映射到可用性区域。 在应用服务计划中部署多个实例并为计划启用区域冗余会在升级期间实例或区域不正常时增加额外的复原层。
有关详细信息,请参阅应用服务的例行计划内维护和应用服务的例行维护、重启和停机。
服务级别协议
Azure 服务的服务级别协议 (SLA) 描述了每个服务的预期可用性,以及解决方案为实现该可用性预期而必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA。
部署区域冗余应用服务计划时,SLA 中定义的运行时间百分比会增加。