Azure 应用程序网关 v2 是一种 Web 流量负载均衡器,可用于管理 Web 应用程序的流量。 它提供自动缩放、区域冗余、静态虚拟 IP 地址以及 Web 应用防火墙 (WAF) 集成等高级功能,以提供高可用性和安全的应用交付服务。
本文介绍 Azure 应用程序网关 v2 可靠性支持,内容涵盖了通过可用性区域实现的地区内复原能力,以及有关多地区部署的信息。 了解如何在生产环境中配置应用程序网关 v2,以实现最大可靠性和容错能力。
可靠性是你和Microsoft之间的共同责任。 可以使用本指南确定哪些可靠性选项满足特定业务目标和运行时间目标。
重要
整体解决方案的可靠性取决于应用程序网关将流量路由到的后端服务器的配置。 根据解决方案,相应的配置可能是 Azure VM、虚拟机规模集、应用服务或外部终结点。
后端服务器不在本文探讨范围内,但其可用性配置会直接影响应用程序的复原能力。 查看解决方案中所有 Azure 服务的可靠性指南,以了解每项服务如何支持你的可靠性需求。 通过确保后端服务器也配置为高可用性和区域冗余,可以为应用程序实现端到端的可靠性。
生产部署建议
若要了解如何部署 Azure API 管理以支持解决方案的可靠性要求,以及可靠性如何影响体系结构的其他方面,请参阅 Azure 架构良好的框架中 Azure 应用程序网关的体系结构最佳做法。
可靠性体系结构概述
Azure 应用程序网关是一项托管服务。 请务必了解服务体系结构的一些关键元素,以便做出明智的可靠性决策。
实例:实例是网关的虚拟机 (VM) 级单元。 每个实例表示处理流量的专用虚拟机。 一个实例等同于一个 VM。
你不会直接看到或管理这些 VM。 平台会自动管理实例创建、运行状况监视和替换不正常的实例。 它还负责处理在横向扩展事件(连接排出)期间正常删除实例的操作。
缩放:网关可靠性的一个重要方面是它如何缩放以满足流量需求。 如果网关未适当缩放,则流量无法正常流动,应用程序可能遭遇停机。 将 Azure 应用程序网关配置为使用以下缩放模式之一:
- 自动缩放:自动调整指定范围内的实例数。 自动缩放功能根据当前流量需求缩放实例数。
- 手动缩放:需要指定确切的实例数。 你负责选择满足流量需求的实例数。
容量单位表示网关可以处理的容量的量。 容量单位是一种综合度量值,涵盖了流量、连接数和计算资源。 每个实例可以处理至少 10 个容量单位。 有关详细信息,请参阅 扩展应用网关 v2 和 WAF v2。
运行状况探测:Azure 应用程序网关使用运行状况探测功能持续监视后端服务器,例如单个应用程序服务器。 检测到不正常的服务器时,系统会自动将流量重定向到正常的后端服务器。
暂时性故障
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议。
使用 Azure 应用程序网关时:
客户端应针对暂时性连接故障实现适当的重试机制。
配置运行状况探测功能,为暂时性故障预留一段宽限期。 运行状况探测可以配置“运行不正常阈值”,该阈值指定连续失败的连接尝试次数,当达到此次数时,后端服务器将被标记为运行不正常。 默认值 3 可确保后端服务器的暂时性故障不会触发应用程序网关,避免不必要地将服务器标记为运行不正常。
可用性区域支持
可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
在支持的区域中部署了 Standard_v2 或 WAF_v2 网关时,Azure 应用程序网关提供两种类型的可用性区域支持:
区域冗余:Azure 自动将实例分布到两个或更多可用性区域。
区域:Azure 将所有应用程序网关实例部署到所选 Azure 区域中选定的单个区域中。
重要
仅当 跨区域延迟 过高而无法满足需求时,才建议固定到单个可用性区域,并且已验证延迟不符合要求时。 区域网关本身不会为可用性区域中断提供复原能力。 若要提高区域应用程序网关部署的复原能力,需要分别将网关显式部署到多个可用性区域,并配置流量路由和故障转移。
区域支持
Azure 应用程序网关在所有支持可用性区域的 Azure 区域中,为 Standard_v2 和 WAF_v2 层级提供可用性区域支持。
要求
必须使用 Standard_v2 或 WAF_v2 SKU 来启用可用性区域支持。
网关必须至少有两个实例。
注释
所有网关至少有两个实例。 即便 Azure 门户显示你的网关只有一个实例,但其在内部始终会以至少两个实例的方式创建。
注意事项
区域冗余网关分布在区域中的两个或更多可用性区域中。 例如,在一个包含三个可用性区域的区域中,具备区域冗余的应用程序网关 v2 部署将在其中至少两个区域中部署实例。 根据区域容量和平台决策,可能仅涉及两个区域,也可能涵盖所有三个区域。
成本
应用程序网关 v2 的可用性区域支持不会在标准容量单位定价之外产生额外费用。 有关定价详情,请参阅了解 Azure 应用程序网关和 Web 应用防火墙的定价以及应用程序网关定价。
配置可用性区域支持
本部分介绍如何为网关配置可用性区域支持。
创建具有可用性区域支持的新应用程序网关 v2:配置可用性区域的方法取决于是要创建区域冗余网关还是区域性网关。
区域冗余:默认情况下,新网关按区域冗余创建。 实例分布在多个可用性区域,并可能使用区域中的两个或更多区域。
若要部署新网关,请参阅快速入门:使用 Azure 应用程序网关定向 Web 流量 - Azure 门户。
注释
部署新网关后,Azure 门户或其他工具可能会指示该网关不是区域冗余网关。 但是,如果它部署在支持可用性区域的区域中,默认情况下它保证具备区域冗余性。
使用 Azure CLI、Azure PowerShell、Bicep、ARM 模板或 Terraform 时,可以选择指定要将网关部署到的可用性区域。 可以通过指定两个或多个区域来部署区域冗余网关。 但是,建议省略区域列表,以便网关可以使用所有可用性区域,除非有特定原因不使用特定区域。
区域:可以使用以下工具部署区域网关:
-
Azure CLI:应在
--zones
命令中使用az network application-gateway create
参数显式选择区域。 若要将网关固定到单个区域,请指定逻辑区域编号。 -
Azure PowerShell:在
-Zone
命令中使用New-AzApplicationGateway
参数。 若要将网关固定到单个区域,请指定逻辑区域编号。 -
Bicep/ARM 模板:在资源定义中配置
zones
属性。 若要将网关固定到单个区域,请指定逻辑区域编号。
注释
选择要使用的可用性区域时,实际上是在选择逻辑可用性区域。 如果你在不同的 Azure 订阅中部署其他工作负载组件,它们可能会使用不同的逻辑可用性区域编号来访问相同的物理可用性区域。 有关详细信息,请参阅 物理和逻辑可用性区域。
-
Azure CLI:应在
更改现有应用程序网关 v2 的可用性区域配置: Azure 会自动将所有现有非区域网关升级为区域冗余,无需你执行任何作。 此升级预计在 2025 年完成。
如果需要从区域冗余网关迁移到区域配置,需要部署新网关。
禁用可用性区域支持:无法禁用可用性区域支持。 具有可用性区域的区域中的所有网关都必须是区域冗余网关或区域网关。
容量计划和管理
在为区域冗余应用程序网关或部署到多个区域的多个区域网关规划区域故障时,需考虑到随着流量重新分配,幸存区域中的实例可能会面临更大的负载。 连接有可能会短暂中断几秒钟。
若要有效管理容量:
建议使用自动缩放。 配置自动缩放并设置适当的最大实例数,以应对区域中断期间可能出现的流量重新分配情况。
如果使用手动缩放,为应对可用性区域故障,建议考虑为网关过度预配实例数量。 超额预配使解决方案能够容忍一定程度的容量损失,同时仍可继续运行而不会降低性能。 有关详细信息,请参阅 通过超额配置管理容量。
监视容量指标,并根据流量模式和性能要求调整缩放参数。
常规操作
以下部分介绍当应用程序网关 v2 配置了可用性区域支持且所有可用性区域均正常运行时的预期情况:
区域之间的流量路由:应用程序网关会自动在网关使用的所有区域中的实例之间分配传入请求。 此主动-主动配置可确保在正常运行条件下实现最佳性能和负载分配。
实例管理:平台会自动管理网关使用的区域中的实例放置,替换故障的实例,维护配置的实例计数。 运行状况监视可确保仅由正常运行的实例接收流量。
区域关闭体验
以下部分介绍当应用程序网关 v2 配置了可用性区域支持且一个或多个可用性区域不可用时会发生什么情况:
检测和响应:检测和响应的责任取决于网关所使用的可用性区域配置。
区域冗余: Azure 管理区域故障检测,并自动启动故障转移。 客户无需执行任何操作。
区域:你需要检测可用性区域的故障情况,并启动故障转移,转移至你在另一个可用性区域中创建的备用网关。
通知:可以通过 Azure 服务运行状况和资源运行状况功能监视区域故障事件。 针对这些服务设置警报,以接收区域级别问题的通知。
活动请求:由发生故障的区域中的实例正在处理的请求会被终止,客户端应按照处理暂时性故障的指导原则重新尝试这些请求。
预期数据丢失:区域故障不会导致数据丢失,因为应用程序网关是无状态服务。
预期故障时间:预计的故障时间取决于网关使用的可用性区域配置:
区域冗余:在区域中断期间,连接可能会遇到短暂的中断,通常持续几秒钟,因为会重新分发流量。
区域:当某个区域不可用时,网关在可用性区域恢复之前不可用。
实例管理:实例管理行为取决于网关使用的可用性区域配置。
区域冗余:平台尝试通过在其他可用性区域中创建临时实例来维护网关的容量。
在内部,应用程序网关使用虚拟机规模集来实现最大程度的区域均衡。 由于此行为,当容量无法在各区域间均衡分配(相差 ± 1 个实例)时,可能不会执行缩放操作。
区域:如果需要,你负责在运行正常的区域中创建实例。
流量重新路由:流量重新路由行为取决于网关使用的可用性区域配置。
区域冗余:应用程序网关会立即将流量重新分发到运行正常的区域中的实例,包括临时创建的任何实例。
带状的:当某个区域不可用时,网关不可用。 如果另一个可用性区域中有辅助网关,你负责将流量重新路由到该辅助网关。
Failback
故障回复行为取决于网关使用的可用性区域配置:
区域冗余:当受影响的可用性区域恢复时,应用程序网关会自动:
- 还原恢复区域中的实例
- 删除中断期间其他区域中创建的任何临时实例
- 恢复所有可用区域的正常流量分布
区域:你负责在可用性区域恢复后将流量重新路由到原始可用性区域中的网关。
对区域故障进行测试
测试区域故障的选项取决于网关使用的可用性区域配置:
区域冗余:区域冗余网关的流量路由、故障转移和故障回复全部由 Azure 应用程序网关平台管理。 由于 Azure 管理此功能,因此无需启动或验证可用性区域故障过程。 平台以透明方式处理所有区域故障场景。
区域:可以通过显式停止网关来模拟可用性区域故障的某些方面。 通过停止应用程序网关,可以测试其他系统和负载均衡器如何处理网关中断。 有关详细信息,请参阅如何停止和启动应用程序网关?。
多区域支持
Azure 应用程序网关 v2 是单区域服务。 如果该区域不可用,应用程序网关也不可用。
备选多区域方法
若要使用应用程序网关 v2 实现多区域复原,需要在每个所需区域中单独部署网关,并实现跨区域流量管理。 你负责部署和配置每个网关,以及流量路由和故障转移。 请考虑以下几点:
跨区域配置一致的应用程序网关规则和策略。 可以使用 Bicep 或 Terraform 等工具将基础结构定义为代码,以简化跨区域的部署和配置。
部署可在区域网关之间发送流量的全局负载均衡解决方案。 Azure 中的全局负载均衡服务是 Azure 流量管理器和 Azure Front Door。 每个服务基于运行状况检查、地理邻近度或性能指标来路由流量。 Azure Front Door 还提供一系列其他功能,包括 DDoS 保护、Web 应用程序防火墙功能以及高级规则和路由功能。
在网关之外,考虑在多个区域间复制后端应用程序和数据。 请参阅每个 Azure 服务的可靠性指南,了解多区域部署方法。
有关示例方法,请参阅将 Azure 应用程序网关与 Azure 流量管理器配合使用。
Backups
Azure 应用程序网关 v2 是不需要传统备份和还原操作的无状态服务。 所有配置数据都存储在 Azure 资源管理器中,可以使用基础结构即代码 (IaC) 方法重新部署,例如 Bicep 文件或 Azure 资源管理器模板(ARM 模板)。
对于配置管理和灾难恢复:
- 使用 Bicep 文件或 ARM 模板定义应用程序网关部署的配置,或导出现有网关的配置
- 在 Azure Key Vault 中存储 TLS 证书,以实现安全管理和复制
- 文档和版本控制自定义配置、规则和策略
- 实现自动化部署管道以实现一致的网关预配
注释
对于大多数解决方案,不应只依赖于配置导出。 请改用本指南中所述的其他功能来支持复原要求。 但是,配置管理可防范配置偏移,并支持快速重新部署方案。
服务级别协议
Azure 应用程序网关的服务级别协议 (SLA) 描述了服务的预期可用性。 它还描述了实现可用性预期必须满足的条件。 若要了解这些条件,请务必查看联机服务的服务级别协议 (SLA)。