你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 应用程序网关 for Containers是托管的应用程序层(第 7 层)负载均衡和动态流量管理服务,适用于在 Kubernetes 中运行的工作负载。 它将传入请求路由到群集中的后端目标。
使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍 Azure 应用程序网关 for Containers 如何处理暂时性故障、可用性区域故障、区域范围的故障和服务维护。 它还介绍了有关服务级别协议(SLA)的备份和还原选项和密钥信息。
提高可靠性的生产部署建议
默认情况下,Application Gateway for Containers 高度可用。 对于生产工作负载:
为了实现区域冗余,请在支持可用性区域的区域中部署用于容器的应用程序网关。 该服务在这些区域中自动具备区域冗余。
配置 Kubernetes 群集、Kubernetes 资源和后端工作负载,以实现区域复原。 有关指南,请参阅 可用性区域故障的复原能力。
为了应对区域范围故障的复原能力,请在每个区域中部署用于容器的应用程序网关及其依赖的工作负荷,并配置跨区域流量管理。 有关指南,请参阅用于复原能力的自定义多区域解决方案。
如果在关联子网上配置网络安全组(NSG)或用户定义的路由(UDR),请按照 NSG 指南 和 用户定义的路由指南进行操作。
有关拓扑、流量流、可靠性、安全性和操作的示例体系结构和指南,请参阅在 Azure Kubernetes 服务 上部署 Application Gateway for Containers。
可靠性体系结构概述
本部分介绍从可靠性的角度来看,服务工作原理最相关的一些重要方面。 本部分介绍逻辑体系结构,其中包括部署和使用的某些资源和功能。 它还讨论了物理架构,该架构提供了服务内部运作方式的详细信息。
逻辑体系结构
用于容器的应用程序网关部署包括Azure和 Kubernetes 群集中的资源。
- Azure 资源:控制平面根据配置协调网关的代理配置。 Azure托管的数据平面在群集外部运行,并处理应用程序流量。
- Kubernetes 资源: 使用 Kubernetes 资源定义路由和其他配置。 ALB 控制器在群集中运行,监视这些资源,并将配置传播到 Azure 中的用于容器的应用程序网关。
可以在两种 部署策略之间进行选择。 通过自带 (BYO) 策略,你可以通过 Azure 工具管理用于容器的应用程序网关、关联和前端资源的生命周期。 采用 由 ALB Controller 管理策略后,ALB 控制器会根据定义的 Kubernetes 资源管理这些 Azure 资源的生命周期。
有关组件的完整描述,请参阅用于容器的应用程序网关组件。
部署并配置 Application Gateway for Containers 后,它会将传入请求路由到 后端目标,它们代表在 Kubernetes 中运行的应用程序。
如果 ALB 控制器或控制平面不可用,则数据平面将继续使用上次成功应用的配置来处理流量。 在中断期间,配置更新不会传播,并且服务无法对扩展事件所需的配置进行编程。
物理体系结构
Azure 根据应用程序流量管理并自动缩放数据平面基础结构。 用于容器的应用程序网关始终部署在高可用性配置中:在支持可用区的区域中,网关采用区域冗余;在不支持可用区的区域中,Azure 使用可用性集。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
将 应用程序网关用于容器时,请考虑以下最佳做法:
实现重试逻辑。 将客户端配置为在暂时性连接失败后重试请求。
配置具有容错的运行状况探测。 如果配置自定义运行状况探测,请将 不健康阈值 设置为容忍暂时性故障。 不健康阈值指定连续失败的探测次数,从而将后端目标标记为不健康。 默认运行状况探测将不健康阈值设为 3 次探测,这有助于防止单次瞬时探测失败将后端标记为不健康。
应对可用区故障的弹性
可用性区域 是 Azure 区域内物理上独立的数据中心组。 当某个区域发生故障时,服务可以切换到其他可用的区域。
当你在支持可用性区域的 Azure 区域中部署用于容器的应用程序网关时,Microsoft 会自动将控制平面和数据平面配置为跨多个区域的区域冗余。 不选择服务使用的区域。
重要
Microsoft 管理用于容器的应用程序网关控制平面和数据平面的区域冗余。 要实现端到端的区域复原能力,请配置 Kubernetes 群集、Kubernetes 资源和后端工作负荷,以提供跨区域的正常目标。
要求
区域支持: 若要使用区域冗余,请选择同时支持 Application Gateway for Containers 和可用性区域的区域。 检查“用于容器的应用程序网关区域可用性”,并将其与支持可用性区域的区域列表进行比较。
Considerations
与 Kubernetes 平台共同负责:Microsoft管理区域故障期间用于容器的应用程序网关的流量重定向。 对于Azure Kubernetes 服务 (AKS),Microsoft管理 Kubernetes 控制平面。 你负责为群集中的节点池和你管理的其他资源配置可用区弹性,以及配置应用程序在发生可用区中断期间的行为。
群集:配置你的 AKS 节点池和其他你管理的区域绑定群集资源以跨越可用性区域。 AKS 管理控制平面;请参阅 配置 AKS 节点池的可用性区域。
工作负载: 你负责部署多个 Pod 副本、将这些副本分布到不同可用区,并确保正常的后端工作负载可在发生可用区故障期间为流量提供服务。 可以使用跨可用区、拓扑分散约束和 Pod 反亲和性的节点池。
Kubernetes 配置对象: Application Gateway for Containers 使用群集 API 存储的 Kubernetes 配置对象。 可用性取决于 Kubernetes 控制平面以及您在集群中管理的配置。
ALB 控制器: 在 Kubernetes 群集中部署 ALB 控制器以协调配置状态。 它不是 Application Gateway for Containers 数据路径的一部分。
ALB 控制器运行两个副本,一个副本充当主副本,另一个作为辅助副本。 如果领导者不可用,辅助节点可以成为领导者并继续传播配置。 这两个副本可能在同一可用性区域中运行,具体取决于群集计划它们的方式。 你负责配置群集和控制器 Pod,以便实现区域复原。 使用 Pod 拓扑分布约束或 Pod 反亲和性将副本分布到各个可用区。 有关详细信息,请参阅 为 AKS 节点池配置可用性区域。
Cost
Application Gateway for Containers 的可用性区域支持不会在标准服务定价之外产生额外费用。 有关定价详细信息,请参阅Azure 应用程序网关定价。
配置可用性区域支持
在受支持的区域中部署新网关时,默认为区域冗余。 无需在Azure资源上启用区域冗余。
负责配置 Kubernetes 群集、ALB 控制器和后端工作负载,实现区域复原。
所有区域正常时的行为
本部分介绍在支持可用区的区域中部署 Application Gateway for Containers,且该服务使用的所有可用区均正常运行时,可以预期什么。
跨区域操作:Azure 托管的用于容器的应用程序网关数据平面将传入请求分发到多个区域中的基础结构。
你负责配置后端工作负荷以跨可用区运行,并提供正常运行的目标来接收该流量。
跨区域数据复制: 用于容器的应用程序网关不存储应用程序数据。 该平台通过区域冗余控制平面管理配置状态,以提供持久性和复原能力。
区域故障期间的行为
本部分介绍在支持可用区的区域中部署 Application Gateway for Containers 时,如果服务使用的其中一个可用区发生中断,会出现什么情况。
检测和响应: 用于容器的应用程序网关在发生区域中断期间将流量重定向到剩余正常区域中的基础设施。 无需对网关的流量重新分发执行操作。
但是,您需要对中断给 Kubernetes 集群和后端应用程序带来的影响负责。
- 通知: Microsoft不会在区域关闭时自动通知你。 但是,可以使用 Azure 服务运行状况 来了解服务的总体运行状况,包括任何区域故障,并且可以设置 服务运行状况警报 来通知问题。
活动请求: 与故障区域的现有连接会断开。 客户端应按照针对暂时性故障的复原能力中的指导重试请求。 将建立到剩余正常区域中的基础结构的新连接。
预期数据丢失: 用于容器的应用程序网关不存储应用程序数据。 该平台通过区域冗余控制平面管理配置状态,以提供持久性和复原能力。
预期的停机时间: 与故障区域的连接断开时,客户端可能会遇到短暂的中断。 客户端应重试请求,以在剩余的正常区域中建立与基础结构的新连接。
在单区域中断期间,Azure托管的控制平面仍可用。 但是,应用配置更新的能力也取决于 Kubernetes 控制平面和 ALB 控制器的可用性。
重新分发:用于容器的应用程序网关将流量重定向到剩余正常区域中的基础结构。
区域恢复
用于容器的应用程序网关可从基础问题自我恢复。 Azure管理网关基础结构的恢复。
针对局部区域故障进行测试
用于容器的应用程序网关平台管理流量路由以及网关本身对区域故障的响应。 你无需启动或管理网关的响应。 如果有一个你管理的 Kubernetes 群集,可以使用Azure Chaos Studio来测试群集对区域故障的响应。 有关详细信息,请参阅针对可用性区域复原能力进行测试。
对区域范围的故障的复原能力
Application Gateway for Containers 是单区域服务。 如果部署网关的 Azure 区域变得不可用,则该网关不可用。
用于复原的自定义多区域解决方案
用于容器的应用程序网关不提供内置的多区域部署或故障转移解决方案。 要针对区域中断进行设计,请在每个区域中部署和配置单独的网关和 Kubernetes 群集。 你负责在区域网关之间定向流量并配置故障转移。
跨区域为容器配置应用程序网关。 若要简化部署并保持配置一致,请使用 Bicep 或 Terraform 等工具将基础结构定义为代码(IaC)。
选择并配置全局流量管理服务,例如Azure Front Door或Azure 流量管理器,以将客户端定向到区域网关。 这些服务使用不同的路由模型和运行状况探测配置。 将所选服务配置为将流量从不可用网关转移到其他可用网关,并查看其文档以了解路由行为和故障转移注意事项。 Azure Front Door还提供分布式拒绝服务(DDoS)保护、Web 应用程序防火墙(WAF)功能和基于规则的路由等功能。
在每个区域中部署后端应用程序,并将其配置为在中断期间提供正常的工作负荷。 如果应用程序依赖于数据或其他Azure服务,请设计和配置这些服务以实现多区域可用性。 查看每个服务的可靠性指南,以了解其多区域选项和限制。
备份和还原
用于容器的应用程序网关不存储应用程序数据。 Azure 资源管理器存储网关Azure资源配置。 可以通过重新部署这些资源的配置来重新创建这些资源。
你负责保存配置和 Kubernetes 资源,这些资源定义网关的部署方式并路由流量:
以基础结构即代码(IaC)形式定义 Azure 资源及其设置(例如 Bicep 或 Terraform),并将这些定义保留在版本控制中。 可以使用它们重新部署网关资源。
备份配置网关的 Kubernetes 资源,例如
ApplicationLoadBalancer、Gateway和HTTPRoute资源。 如果需要重新创建路由配置,请将其还原到群集。在版本控制中或通过标准配置备份过程保留相关配置,包括自定义规则和 Web 应用程序防火墙策略。 可以使用部署管道一致地重新创建Azure和 Kubernetes 资源。
服务维护期间的系统弹性能力
Microsoft 管理 Application Gateway for Containers 的维护,同时维护服务的高可用性。
每个关联所需的最小子网大小 /24 已考虑维护时段,因此无需为维护分配额外的子网 IP 地址空间。
有关详细信息,请参阅 适用于容器的应用程序网关的缩放和可用性。
服务级别协议
Azure服务的服务级别协议(SLA)描述了每个服务的预期可用性以及解决方案必须满足的条件,以实现该可用性预期。 有关详细信息,请参阅 联机服务的 SLA。
Application Gateway for Containers SLA 单独衡量控制平面和数据平面。 这两个层面都纳入总体 SLA 计算。