共用方式為

Azure 应用程序网关 v2 中的可靠性

本文介绍 Azure 应用程序网关 v2 可靠性支持,内容涵盖了通过可用性区域实现的地区内复原能力,以及有关多地区部署的信息。 了解如何在生产环境中配置应用程序网关 v2,以实现最大可靠性和容错能力。

可靠性是你和Microsoft之间的共同责任。 可以使用本指南确定哪些可靠性选项满足特定业务目标和运行时间目标。

重要

整体解决方案的可靠性取决于应用程序网关将流量路由到的后端服务器的配置。 根据解决方案,这些可能是 Azure 虚拟机(VM)、Azure 虚拟机规模集、Azure 应用服务或外部终结点。

后端服务器不在本文范围内,但其可用性配置直接影响应用程序的复原能力。 查看解决方案中所有 Azure 服务的可靠性指南,以了解每项服务如何支持你的可靠性需求。 通过确保后端服务器也配置为高可用性和区域冗余,可以为应用程序实现端到端的可靠性。

应用程序网关 v2 是一个 Web 流量负载均衡器,可用于管理发到 Web 应用程序的流量。 它提供自动缩放、区域冗余、静态虚拟 IP (VIP) 地址和 Web 应用程序防火墙 (WAF) 集成等高级功能,以提供高度可用和安全的应用程序传送服务。

生产部署建议

若要了解如何部署应用程序网关以支持解决方案的可靠性要求,以及可靠性如何影响体系结构的其他方面,请参阅 Azure Well-Architected Framework 中应用程序网关的体系结构最佳做法

可靠性体系结构概述

应用程序网关是托管服务。 请务必了解服务体系结构的一些关键元素,以便做出明智的可靠性决策。

  • 实例:实例是网关的虚拟机 (VM) 级单元。 每个实例表示处理流量的专用 VM。 一个实例等同于一个 VM。

    你不会直接看到或管理这些 VM。 平台会自动管理实例创建、运行状况监视和替换不正常的实例。 它还管理在横向扩展事件期间正常删除实例。 此过程称为 连接清空

  • 缩放:网关可靠性的一个重要方面是它如何缩放以满足流量需求。 如果网关未适当缩放,则流量无法正常流动,应用程序可能遭遇停机。 可以将应用程序网关配置为使用以下缩放模式之一。

    • 自动缩放:自动调整指定范围内的实例数。 自动缩放功能根据当前流量需求缩放实例数。

    • 手动缩放:需要指定确切的实例数。 你负责选择满足流量需求的实例数。

    容量单位表示网关可以处理的容量的量。 容量单位是一种综合度量值,涵盖了流量、连接数和计算资源。 每个实例可以处理至少 10 个容量单位。 有关详细信息,请参阅 缩放应用程序网关 v2 和 WAF v2

  • 运行状况探测: 应用程序网关使用 运行状况探测 来持续监视后端服务器,例如单个应用程序服务器。 检测到不正常的服务器时,系统会自动将流量重定向到正常的后端服务器。

暂时性故障

暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。

与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅 处理暂时性故障的建议

使用应用程序网关时,请考虑以下最佳做法:

  • 实现重试逻辑。 客户端应针对暂时性连接故障实现适当的重试机制。

  • 配置具有容差的运行状况探测。 配置运行状况探测功能,为暂时性故障预留一段宽限期。 运行状况探测可以配置“运行不正常阈值”,该阈值指定连续失败的连接尝试次数,当达到此次数时,后端服务器将被标记为运行不正常。 默认值为 3,可确保后端服务器中的暂时性故障不会触发应用程序网关,以不必要地将服务器标记为不正常。

可用性区域支持

可用性区域 是每个 Azure 区域内物理上独立的数据中心群组。 当某个区域发生故障时,服务可以切换到其他可用的区域。

在受支持的区域中部署Standard_v2或WAF_v2网关时,应用程序网关提供两种类型的可用性区域支持。

  • 区域冗余: Azure 自动将实例分布到两个或更多可用性区域。

  • 带状的: Azure 将所有应用程序网关实例部署到所选 Azure 区域中选择的单个区域。

    重要

    仅当 跨区域延迟 过高而无法满足需求且验证延迟是否符合要求时,才建议固定到单个可用性区域。 区域网关本身不会为可用性区域中断提供复原能力。 若要提高区域应用程序网关部署的复原能力,需要分别将网关显式部署到多个可用性区域,并配置流量路由和故障转移。

区域支持

Azure 应用程序网关在所有支持可用性区域的 Azure 区域中,为 Standard_v2 和 WAF_v2 层级提供可用性区域支持。

要求

  • 必须使用 Standard_v2 或 WAF_v2 SKU 来启用可用性区域支持。

  • 网关必须至少有两个实例。

    注释

    所有网关至少有两个实例。 即使 Azure 门户指示网关有单个实例,在内部始终至少创建两个实例。

注意事项

区域冗余网关分布在区域中的两个或更多可用性区域中。 例如,在具有三个可用性区域的区域中,区域冗余应用程序网关 v2 部署在至少两个区域中有实例。 根据区域容量和平台决策,实例可能分布在两个区域或三个区域。

成本

应用程序网关 v2 的可用性区域支持不会在标准容量单位定价之外产生额外费用。 有关定价详细信息,请参阅 了解应用程序网关和 WAF应用程序网关定价的定价

配置可用性区域支持

本部分介绍如何为网关配置可用性区域支持。

  • 创建具有可用性区域支持的新网关。 用于配置可用性区域的方法取决于是要创建区域冗余网关还是区域网关。

    • 区域冗余:默认情况下,新网关按区域冗余创建。 实例分布在多个可用性区域,并可能使用区域中的两个或更多区域。

      若要部署新网关,请参阅 快速入门:使用应用程序网关定向 Web 流量 - Azure 门户

      注释

      使用 Azure 门户部署新网关后,门户或其他工具可能会指示网关不是区域冗余的。 但是,如果网关部署在支持可用性区域的区域中,则保证其区域冗余。

      使用 Azure CLI、Azure PowerShell、Bicep、Azure 资源管理器模板(ARM 模板)或 Terraform 时,可以选择指定要将网关部署到的可用性区域。 可以通过指定两个或多个区域来部署区域冗余网关。 但是,建议省略区域列表,以便网关可以使用所有可用性区域,除非有特定原因不使用特定区域。

    • 带状的: 可以使用以下工具部署区域网关。

      • Azure CLI:应在 --zones 命令中使用 az network application-gateway create 参数显式选择区域。 若要将网关固定到单个区域,请指定逻辑区域编号。

      • Azure PowerShell:在 -Zone 命令中使用 New-AzApplicationGateway 参数。 若要将网关固定到单个区域,请指定逻辑区域编号。

      • Bicep 和 ARM 模板:zones 资源定义中配置属性。 若要将网关固定到单个区域,请指定逻辑区域编号。

      注释

      选择要使用的可用性区域时,实际上是在选择逻辑可用性区域。 如果你在不同的 Azure 订阅中部署其他工作负载组件,它们可能会使用不同的逻辑可用性区域编号来访问相同的物理可用性区域。 有关详细信息,请参阅 物理和逻辑可用性区域

  • 更改现有应用程序网关 v2 实例的可用性区域配置。 Azure 会自动将所有现有非区域网关升级为区域冗余,无需你执行任何作。 此升级预计在 2025 年完成。

    如果需要从区域冗余网关迁移到区域配置,需要部署新网关。

  • 禁用可用性区域支持。 无法禁用可用性区域支持。 支持可用性区域的区域中的所有网关都必须是区域冗余或区域。

容量计划和管理

为部署到多个区域的区域冗余应用程序网关或多个区域网关规划区域故障时,请考虑生存区域中的实例在重新分发流量时可能会增加负载。 连接可能会遇到短暂的中断,可能会持续几秒钟。

若要有效管理容量,请执行以下作:

  • 使用自动缩放。 配置自动缩放并设置适当的最大实例数,以应对区域中断期间可能出现的流量重新分配情况。

    如果使用手动缩放,为应对可用性区域故障,建议考虑为网关过度预配实例数量。 过度预配允许解决方案容忍某种程度的容量丢失,同时继续运行而不降低性能。 有关详细信息,请参阅 通过超额配置管理容量

  • 响应流量模式的更改。 监视容量指标,并根据流量模式和性能要求调整缩放参数。

常规操作

以下部分介绍使用可用性区域支持配置应用程序网关 v2 时预期的情况,并且所有可用性区域都正常运行。

  • 区域之间的流量路由: 应用程序网关会自动在网关使用的所有区域中的实例之间分配传入请求。 此主动-主动配置可确保在正常运行条件下实现最佳性能和负载分配。

  • 实例管理: 平台会自动管理网关使用的区域中的实例放置。 它将替换失败的实例并维护配置的实例计数。 运行状况监视可确保仅由正常运行的实例接收流量。

区域关闭体验

以下部分介绍使用可用性区域支持配置应用程序网关 v2 时会发生什么情况,以及一个或多个可用性区域不可用的情况。

  • 检测和响应: 检测和响应的责任取决于网关使用的可用性区域配置。

    • 区域冗余: Azure 管理区域故障检测,并自动启动故障转移。 客户无需执行任何操作。

    • 区域:你需要检测可用性区域的故障情况,并启动故障转移,转移至你在另一个可用性区域中创建的备用网关。

  • 通知: 可以通过 Azure 服务运行状况和资源运行状况监视区域故障事件。 针对这些服务设置警报,以接收区域级别问题的通知。

  • 活动请求: 在区域中断期间,正在由该区域中的实例处理的请求将终止。 客户端应按照有关如何 处理暂时性故障的指导重试请求。

  • 预期数据丢失: 区域故障不应导致数据丢失,因为应用程序网关是无状态服务。

  • 预期的停机时间: 预计的停机时间取决于网关使用的可用性区域配置。

    • 区域冗余: 在区域中断期间,连接可能会遇到短暂的中断,这些中断通常持续几秒钟,因为流量被重新分发。

    • 区域:当某个区域不可用时,网关在可用性区域恢复之前不可用。

  • 实例管理:实例管理行为取决于网关使用的可用性区域配置。

    • 区域冗余:平台尝试通过在其他可用性区域中创建临时实例来维护网关的容量。

      在内部,应用程序网关使用虚拟机规模集,该规模集执行[ 最佳工作区域均衡]最佳工作区域均衡。 由于此行为,当容量无法在各区域间均衡分配(相差 ± 1 个实例)时,可能不会执行缩放操作。

    • 区域:如果需要,你负责在运行正常的区域中创建实例。

  • 流量重新路由: 流量重新路由行为取决于网关使用的可用性区域配置。

    • 区域冗余:应用程序网关会立即将流量重新分发到运行正常的区域中的实例,包括临时创建的任何实例。

    • 带状的:当某个区域不可用时,网关不可用。 如果另一个可用性区域中有辅助网关,你负责将流量重新路由到该辅助网关。

区域恢复

区域恢复行为取决于网关使用的可用性区域配置:

  • 区域冗余: 当受影响的可用性区域恢复时,应用程序网关会自动执行以下作:

    • 还原恢复区域中的实例

    • 删除中断期间其他区域中创建的任何临时实例

    • 恢复所有可用区域的正常流量分布

  • 区域:你负责在可用性区域恢复后将流量重新路由到原始可用性区域中的网关。

对区域故障进行测试

测试区域故障的选项取决于网关使用的可用性区域配置。

  • 区域冗余: 应用程序网关平台完全管理区域冗余网关的流量路由、故障转移和故障回复。 由于 Azure 管理此功能,因此无需启动或验证可用性区域故障过程。 平台以透明方式处理所有区域故障场景。

  • 区域:可以通过显式停止网关来模拟可用性区域故障的某些方面。 通过停止网关,可以测试其他系统和负载均衡器如何处理网关中断。 有关详细信息,请参阅 如何停止和启动应用程序网关

多区域支持

应用程序网关 v2 是单区域服务。 如果区域变得不可用,则网关也不可用。

备选多区域方法

若要使用应用程序网关 v2 实现多区域复原,需要在每个所需区域中部署单独的网关,并跨区域实现流量管理。 你负责部署和配置每个网关,以及流量路由和故障转移。 请考虑以下几点:

  • 跨区域配置一致的应用程序网关规则和策略。 可以使用 Bicep 或 Terraform 等工具将基础结构定义为代码(IaC),以简化跨区域的部署和配置。

  • 部署可在区域网关之间发送流量的全局负载均衡解决方案。 Azure 中的全局负载均衡服务是 Azure 流量管理器和 Azure Front Door。 每个服务基于运行状况检查、地理邻近度或性能指标来路由流量。 Azure Front Door 还提供一系列其他功能,包括分布式拒绝服务(DDoS)攻击防护、WAF 功能以及高级规则和路由功能。

  • 在网关之外,考虑在多个区域间复制后端应用程序和数据。 请参阅每个 Azure 服务的可靠性指南,了解多区域部署方法。

Backups

应用程序网关 v2 是不需要传统备份和还原作的无状态服务。 所有配置数据都存储在 Resource Manager 中,可以使用 IaC 方法(如 Bicep 文件或 ARM 模板)重新部署。

对于配置管理和灾难恢复,应执行以下作:

  • 使用 Bicep 文件或 ARM 模板定义应用程序网关部署的配置,或导出现有网关的配置。

  • 在 Azure Key Vault 中存储传输层安全性(TLS)证书,以便进行安全管理和复制。

  • 文档和版本控制自定义配置、规则和策略。

  • 实现自动化部署管道以实现一致的网关预配。

对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。 有关详细信息,请参阅 冗余、复制和备份

服务级别协议

Azure 服务的服务级别协议 (SLA) 描述了每个服务的预期可用性,以及解决方案为实现该可用性预期而必须满足的条件。 有关详细信息,请参阅 联机服务的 SLA