你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

负载均衡选项

术语 负载均衡 是指跨多个计算资源进行处理的分布。 可以通过负载均衡来优化资源使用情况、最大化吞吐量、最大程度地减少响应时间,并避免重载任何单个资源。 负载均衡还可以通过跨冗余计算资源共享工作负荷来提高可用性。

Azure 提供了各种负载均衡服务,可用于在多个计算资源之间分配工作负荷。 这些服务包括 Azure API 管理、Azure 应用程序网关、Azure Front Door、Azure 负载均衡器和 Azure 流量管理器。

本文介绍有助于确定适合工作负荷需求的负载均衡解决方案的注意事项。

Azure 负载均衡服务

Azure 中提供了以下具有负载均衡功能的主要负载均衡服务和服务:

  • API 管理 是一种托管服务,可用于发布、保护、转换、维护和监视 HTTP(S) API。 它为 API 提供网关,可配置为跨指定负载均衡后端池中的节点对流量进行负载均衡。 可以从三种不同的负载均衡方法中进行选择:轮循机制、加权和基于优先级的方法。

    重要

    API 管理不是传统的常规用途负载均衡器。 它专为 HTTP API 设计,其负载均衡功能在其更广泛的 API 管理功能中是可选的。 本文中包含 API 管理,以便实现完整性,因为它为特定的 API 托管拓扑提供负载均衡功能。 但是,其主要用途是 API 网关功能,而不是负载均衡。

  • 应用程序网关 是代理负载均衡器。 它以托管服务的形式提供应用程序传送控制器功能。 它提供了各种第 7 层负载均衡、路由、TLS 卸载和 Web 应用程序防火墙功能。 作为终止负载均衡器,它还为 TCP 和 TLS 协议提供 第 4 层负载均衡 。 使用应用程序网关将流量从公共网络空间转换到区域中专用网络空间中托管的 Web 服务器。

  • Azure Front Door 是一个应用程序分发网络,可为 Web 应用程序提供全局负载均衡和站点加速。 它为应用程序提供第 7 层功能,例如安全套接字层(SSL)卸载、基于路径的路由、快速故障转移和缓存,以提高性能和高可用性。

  • 负载均衡器 是一种第 4 层服务,可跨所有用户数据报协议(UDP)和传输控制协议(TCP)协议处理入站和出站流量。 它专为高性能和超低延迟而设计。 该服务旨在处理每秒数百万个请求,同时确保解决方案高度可用。 负载均衡器具有区域冗余设计,可确保跨多个可用性区域实现高可用性。 它支持区域部署拓扑和 跨区域拓扑

  • 流量管理器 是基于域名系统(DNS)的流量负载均衡器,可用于将流量以最佳方式分发到全球 Azure 区域的服务,同时提供高可用性和响应能力。 由于流量管理器是基于 DNS 的负载均衡服务,因此仅在域级别进行负载均衡。 因此,无法像 Azure Front Door 那样快速故障转移。 忽略 DNS 生存时间(TTL)值的 DNS 缓存和系统通常会导致这种延迟。

注释

群集技术(如 Azure 容器应用或 Azure Kubernetes 服务(AKS)包含负载均衡构造。 这些构造主要在其自身群集边界的范围内运行。 它们根据就绪性和健康检查将流量路由到可用的应用程序实例。 本文不介绍这些负载均衡选项。

服务分类

Azure 负载均衡服务可以按两个维度进行分类:全局与区域和 HTTP(S)与非 HTTP(S)。

全局与区域

  • 全球: 这些负载均衡服务在区域后端、云或混合本地服务之间分配流量。 它们提供一个控制平面,用于将用户流量路由到全局可用的后端。 这些服务对服务可靠性或性能的更改做出反应,以最大程度地提高可用性和性能。 可以将它们视为在应用程序标识、终结点或跨不同区域或地理位置托管的扩展单元之间进行负载均衡的系统。

  • 地域: 这些负载均衡服务在虚拟网络中跨虚拟机(VM)或区域中的区域冗余服务终结点分配流量。 你可以将它们视为在虚拟网络中的区域内的 VM、容器或群集之间实现负载均衡的系统。

HTTP(S) 与非 HTTP(S)

  • HTTP(S): 这些负载均衡服务是仅接受 HTTP(S) 流量的第 7 层 负载均衡器。 它们专为 Web 应用程序或其他 HTTP(S) 终结点而设计。 功能包括 SSL 卸载、Web 应用程序防火墙、基于路径的负载均衡和会话相关性。

  • 非 HTTP(S): 这些负载均衡服务包括 第 4 层 TCP 和 UDP 服务,或基于 DNS 的负载均衡服务。

下表汇总了 Azure 负载均衡服务。

服务 全局或区域 建议的流量
API Management 区域或全局 仅限 HTTP(S) API
应用程序网关 区域 HTTP(S)、TCP 和 TLS
Azure Front Door 全球 HTTP(S)
负载均衡器 区域或全局 Non-HTTP(S)
Traffic Manager 全球 Non-HTTP(S)

注释

流量管理器和负载均衡器可以分发任何流量类型,包括 HTTP(S)。 但是,这些服务不提供第 7 层功能。 与负载均衡器不同,流量管理器不会直接处理流量。 流量管理器使用 DNS 将客户端定向到相应的终结点。

为方案选择负载均衡解决方案

选择负载均衡解决方案时,请考虑以下因素:

  • 流量类型: 确定它是 Web HTTP(S) 应用程序,以及它是面向公众的应用程序还是专用应用程序。

  • 全局与区域: 阐明是否需要在单个虚拟网络中对 VM 或容器进行负载均衡、跨区域或两者进行负载均衡。

  • 可用性:查看服务级别协议(SLA)。

  • 成本: 考虑到服务本身的成本,以及管理基于该服务构建的解决方案的运营成本。 有关详细信息,请参阅 Azure 定价

  • 功能和限制: 确定每个服务支持的功能以及适用的 服务限制

以下流程图可帮助你为应用选择负载均衡解决方案。 流程图指导你完成一组关键决策条件,以达到建议。

小窍门

可以使用 Azure 中的 Microsoft Copilot 来帮助指导你完成此决定,类似于此处所述的流程图。 有关详细信息,请参阅 在 Azure 中使用 Microsoft Copilot 处理 Azure 负载均衡器

每个应用程序都具有在简单决策树中未捕获的独特要求。 将此流程图或 Copilot 建议视为起点。 然后执行更详细的评估。

Azure 负载均衡决策树的图示。

该图显示了一个分支流程图,其中每个路径都会导致负载均衡解决方案。 第一个路径从 Web 应用程序(HTTP/HTTPS)开始,通过标记为“否”的箭头指向面向 Internet 的应用程序,然后通过另一个标记为“否”的箭头指向负载均衡器。 第二个路径从 Web 应用程序(HTTP/HTTPS)开始,通过“否”箭头指向面向 Internet 的应用程序,通过“是”箭头指向部署在多个区域的全局,然后通过“否”箭头指向负载均衡。 第三条路径从 Web 应用程序(HTTP/HTTPS)开始,通过“否”箭头指向面向互联网的应用程序,通过“是”箭头指向在多个区域中部署的全局,然后通过“是”箭头指向流量管理器和负载均衡器。 第四个路径从 Web 应用程序(HTTP/HTTPs)开始,沿着“是”箭头指向面向 Internet 的应用程序,沿着“否”箭头指向仅托管 API,再沿着“是”箭头指向 API 管理。 第五条路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向互联网的应用程序,再通过“否”箭头指向仅托管 API,最后通过“否”箭头指向应用程序网关。 第六个路径从 Web 应用程序(HTTP/HTTPs)开始,通过“是”箭头指向面向 Internet 的应用程序,然后通过“是”箭头指向全局/已部署多个区域,询问您是否需要对每个请求进行 SSL 卸载或应用程序层处理,通过“是”箭头最终指向 Azure Front Door 和应用程序网关。 第七个路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向 Internet 的应用程序,再通过“是”箭头指向全局/已部署多个区域,询问是否需要执行每个请求的 SSL 卸载或应用程序层处理,通过“仅 API”箭头指向 Azure Front Door 和 API 管理。 第八个路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向 Internet 的应用程序,通过“是”箭头指向全球/部署多个区域,再通过“是”箭头询问是否需要按请求进行 SSL 卸载或应用层处理,然后通过“否”箭头,连接到托管 - PaaS、IaaS、AKS,再通过“PaaS”箭头连接到 Azure Front Door。 第九个路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向 Internet 的应用程序,通过“是”箭头到全球/已在多个区域进行部署,询问是否需要按请求进行 SSL 卸载或应用程序层处理,通过“否”箭头到托管 - PaaS、IaaS、AKS,通过 AKS 箭头到 Azure Front Door 和应用程序网关入口控制器。 从 Web 应用程序 (HTTP/HTTPS) 开始,第十条路径通过“是”指向面向互联网的应用程序,再通过“是”箭头指向“全球/部署多个区域”,然后询问“是否需要每个请求的 SSL 卸载或应用层处理”,通过“否”箭头,指向“托管 - PaaS、IaaS、AKS”,并通过“IaaS VMs”箭头指向“Azure Front Door 和负载均衡器”。 第十一个路径从 Web 应用程序(HTTP/HTTPs)开始,通过“是”箭头指向面向 Internet 的应用程序,通过“是”箭头指向全局/部署多个区域,是否需要性能加速,通过“否”箭头到应用程序网关。 第十二个路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向互联网的应用程序,通过“是”箭头指向全局/部署多个区域,通过“否”箭头至“您是否需要性能加速”,然后通过是不是箭头至“是否需要在每个请求中执行 SSL 卸载或应用程序层处理”,最后通过“是”箭头指向 Azure Front Door 和应用程序网关。 第十三条路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头指向面向 Internet 的应用程序,再通过“是”箭头指向全球/已部署多个地区。如果不需要性能加速,是否每个请求需要执行 SSL 卸载或应用程序层处理?如果需要,通过“是”箭头指向 Azure Front Door 和 API 管理,专用于 API。 第十四条路径从 Web 应用程序(HTTP/HTTPS)开始,通过“是”箭头连接到面向 Internet 的应用程序,再通过“是”箭头连接到全球/已部署多个区域,随后通过“否”箭头判断是否需要性能加速,最后通过“否”箭头连接到应用程序网关。 第十五个路径从 Web 应用程序(HTTP/HTTP)开始,通过“是”箭头指向面向 Internet 的应用程序,通过“是”箭头指向全局/部署多个区域,是否需要通过“无”箭头加速性能,通过“仅 API”箭头指向应用程序网关和 API 管理。

如果工作负荷包含多个需要负载均衡的服务,请单独评估每个服务。 有效的设置通常使用多种类型的负载均衡解决方案。 可以在工作负载体系结构的不同位置合并这些解决方案,以提供独特的功能或角色。

定义

  • Web 应用程序(HTTP/HTTPS) 是指至少需要以下功能之一的应用程序:

    • 为第 7 层数据(例如 URL 路径)做出路由决策
    • 支持检查通信数据负载,例如 HTTP 请求正文
    • 处理传输层安全性 (TLS) 功能
  • 非 HTTP(S) 应用程序 是指需要第 4 层(TCP 或 UDP 协议)或传输层安全性(TLS 协议)支持的应用程序。 Azure 负载均衡器和 Azure 应用程序网关都提供处理此类流量的功能。 但是,它们的功能和行为有所不同,如本 比较文章中所述。

  • 面向 Internet 的应用程序 是指可从 Internet 公开访问的应用程序。 最佳做法是,应用程序所有者应用限制性访问策略,或通过设置 Web 应用程序防火墙和分布式拒绝服务保护等产品/服务来保护应用程序。

  • 全局或部署在多个区域中 意味着负载均衡器应具有单个高度可用的控制平面,用于将流量路由到全球分布式应用程序上的公共终结点。 此配置可以跨区域支持主动-主动或主动-被动拓扑。

    注释

    可以使用区域服务(如应用程序网关)跨跨多个区域的后端进行负载均衡,并通过单个控制平面控制路由。 它的工作原理是使用 跨区域专用链接、全局虚拟网络对等互连,甚至是其他区域中服务的公共 IP 地址。

    此方案不是此决定的主要点。

    将区域资源用作全球分布式后端的路由器会引入区域单一故障点。 它还会产生额外的延迟,因为流量在转到另一个区域之前强制通过一个区域,然后再次返回。

  • 平台即服务(PaaS) 提供托管托管托管环境,可在其中部署应用程序,而无需管理 VM 或网络资源。 在本例中,PaaS 是指在区域内提供集成负载均衡的服务。 有关详细信息,请参阅 选择计算服务以获取可伸缩性

  • 使用 AKS 可以部署和管理容器化应用程序。 AKS 提供无服务器 Kubernetes、集成的持续集成和持续交付(CI/CD)体验以及企业级安全性和治理。 有关详细信息,请参阅 AKS 体系结构设计

  • 基础结构即服务(IaaS) 是一种计算选项,可在其中预配所需的 VM 以及关联的网络和存储组件。 IaaS 应用程序需要使用 Azure 负载均衡器在虚拟网络中进行内部负载均衡。

  • 应用程序层处理 是指虚拟网络中的特殊路由。 示例包括跨 VM 或虚拟机规模集的基于路径的路由。 有关详细信息,请参阅 在 Azure Front Door 后面部署应用程序网关

  • 仅 API 是指需要对不是 Web 应用程序的 HTTP API 进行负载均衡。 在这种情况下,如果工作负荷已对其网关功能使用 API 管理,则可以考虑其可选的负载均衡功能,以将流量定向到尚未通过另一种机制进行负载均衡的 API 后端。 如果工作负荷不使用 API 管理,请不要将其仅用于负载均衡。

  • 性能加速 是指加速 Web 访问的功能。 可以通过使用内容分发网络或优化的Point-of-Presence入口来实现性能加速,以便快速客户接入目标网络。 Azure Front Door 支持 内容分发网络Anycast 流量加速。 可以在体系结构中使用或不带应用程序网关这两种功能的优势。

其他注意事项

每个负载均衡服务还具有应考虑的功能支持或实现详细信息。 下面是可能与负载均衡方案相关的一些示例:

  • WebSocket 支持
  • 服务器发送的事件支持
  • HTTP/2 支持(接收和继续后端节点)
  • 粘滞会话支持
  • 后端节点运行状况监视机制
  • 客户端体验或不正常节点检测与从路由逻辑中删除之间的延迟

将功能卸载到负载均衡器

Azure 中的某些负载均衡选项允许将功能从后端节点卸载到负载均衡器。 这些选项实现 网关卸载 云设计模式。 例如,应用程序网关可以卸载 TLS,因此工作负荷的面向公众的证书在一个位置而不是跨后端节点进行管理。 API 管理可配置为卸载一些基本授权问题,例如验证 JSON Web 令牌(JWT)访问令牌中的声明。 卸载跨切问题有助于降低后端逻辑的复杂性并提高其性能。

例子

下表列出了基于解决方案中使用的负载均衡服务的各种文章。

服务业 文章 DESCRIPTION
负载均衡器 跨可用性区域对 VM 进行负载均衡 跨可用区域对 VM 进行负载均衡有助于在整个数据中心发生故障或服务中断(这种情况很少见)时保护应用和数据。 使用区域冗余时,一个或多个可用性区域可能会发生故障,而数据路径可以幸存,但前提是该区域中有一个局部区域保持正常。
Traffic Manager 可实现高可用性和灾难恢复的多层 Web 应用程序 部署为高可用性和灾难恢复而生成的可复原多层应用程序。 如果主要区域变得不可用,则流量管理器将故障转移到次要区域。
应用程序网关和 API 管理 API 管理登陆区域体系结构 使用应用程序网关卸载 Web 应用程序防火墙和 TLS。 使用 API 管理跨 API 后端进行负载均衡。
流量管理器和应用程序网关 使用流量管理器和应用程序网关实现多区域负载均衡 了解如何在多个 Azure 区域中为 Web 工作负载提供服务并部署可复原多层应用程序,以实现高可用性和可靠的灾难恢复基础结构。

后续步骤