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