负载均衡选项
术语 负载均衡 是指跨多个计算资源进行处理的分布。 负载均衡以优化资源使用、最大化吞吐量、最小化响应时间,并避免重载任何单个资源。 负载均衡还可以通过跨冗余计算资源共享工作负荷来提高可用性。
Azure 提供多种工作负载服务,可用于在多个计算资源之间分配工作负载。 这些服务包括 Azure API 管理、Azure 应用程序网关、Azure Front Door、Azure 负载均衡器和 Azure 流量管理器。
本文介绍有助于确定适合工作负荷需求的负载均衡解决方案的注意事项。
服务分类
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 负载均衡服务。
服务 | 全局/区域 | 建议的流量 |
---|---|---|
Azure API 管理 | 区域或全局 | HTTP(S) API |
Azure 应用程序网关 | 区域 | HTTP(S) |
Azure Front Door | 全球 | HTTP(S) |
Azure Load Balancer | 区域或全局 | 非 HTTP(S) |
Azure 流量管理器 | 全球 | 非 HTTP(S) |
注意
Azure 流量管理器和 Azure 负载均衡器可以分发任何流量类型,包括 HTTP(S)。 但是,这些服务不提供第 7 层功能。 与 Azure 负载均衡器不同,Azure 流量管理器不会直接处理流量。 流量管理器使用 DNS 将客户端定向到相应的终结点。
Azure 负载均衡服务
以下是 Azure 中当前可用的主要负载均衡服务:
API 管理 是一项托管服务,可用于发布、保护、转换、维护和监视 HTTP(S) API。 它为 API 提供网关,并且可以在指定的负载均衡后端池中跨节点对流量进行负载均衡。 可以从三种不同的负载均衡方法中进行选择:轮循机制、加权和基于优先级的方法。
应用程序网关以服务形式提供应用程序传递控制器,提供各种第 7 层负载均衡功能和 Web 应用程序防火墙功能。 使用应用程序网关将流量从公共网络空间转换到区域中专用网络空间中托管的 Web 服务器。
Front Door 是一个应用程序分发网络,可为 Web 应用程序提供全局负载均衡和站点加速。 它为应用程序提供第 7 层功能,例如 SSL 卸载、基于路径的路由、快速故障转移和缓存,以提高性能和高可用性。
负载均衡器是适用于所有 UDP 和 TCP 协议的高性能、超低延迟第 4 层负载均衡服务(入站和出站)。 它构建用于处理每秒数百万个请求,同时确保解决方案高度可用。 负载均衡器是区域冗余的,可确保整个可用性区域的高可用性。 它同时支持区域部署拓扑和跨区域拓扑。
是基于 DNS 的流量负载均衡器,使你能够以最佳方式将流量分发给全球 Azure 区域的服务,同时提供高可用性和响应能力。 由于流量管理器是基于 DNS 的负载均衡服务,因此它仅在域级别进行负载均衡。 因此,由于 DNS 缓存和系统不遵循 DNS 生存时间(TTL)值,因此无法像 Azure Front Door 那样快速故障转移。
注意
群集技术(如 Azure 容器应用或 Azure Kubernetes 服务)包含负载均衡构造,这些构造主要在自己的群集边界范围内运行。 这些功能根据就绪情况和运行状况探测将流量路由到可用应用程序实例。 本文不介绍这些负载均衡选项。
Azure 中负载均衡的决策树
选择负载均衡解决方案时,请考虑以下因素:
- 流量类型: 它是 Web HTTP(S) 应用程序吗? 它是面向公众的应用程序还是专用应用程序?
- 全局与区域: 是否需要对单个虚拟网络中的 VM 或容器进行负载均衡,或者跨区域或两者对缩放单元/部署进行负载均衡?
- 可用性:什么是服务级别协议?
- 成本: 有关详细信息,请参阅 Azure 定价。 除了服务本身的成本外,还考虑管理基于该服务构建的解决方案的运营成本。
- 功能和限制: 每个服务支持哪些功能,以及每个 服务的服务限制 是什么?
以程图可帮助你为应用程序选择负载均衡解决方案。 该流程图将引导你创建一组关键决策条件用于访问建议。
提示
可以在 Azure 门户中使用 Azure Copilot 来帮助指导你完成类似于流程图的这一决策。 在 Azure Copilot 中,输入 “帮助我”选择负载均衡器。 通过回答 Copilot 的问题,可以缩小负载均衡选项的范围。
每个应用程序都具有在简单决策树中未捕获的独特要求。 将此流程图或 Azure Copilot 的建议视为起点。 然后执行更详细的评估。
如果工作负荷涉及多个需要负载均衡的服务,请单独评估每个服务。 有效的设置通常使用多种类型的负载均衡解决方案。 可以在工作负荷体系结构的不同位置合并这些解决方案,每个解决方案都提供独特的功能或角色。
定义
Web 应用程序(HTTP/HTTPS): 此指定是指需要为第 7 层数据(如 URL 路径、支持检查通信有效负载(如 HTTP 请求正文)或处理 TLS 功能的能力做出路由决策。
面向 Internet 的应用程序: 可从 Internet 公开访问的应用程序。 最佳做法是,应用程序所有者应用限制性访问策略或通过设置 Web 应用程序防火墙和 DDoS 防护等产品/服务来保护应用程序。
全局或部署在多个区域中: 如果此负载均衡器应具有单个高度可用的控制平面,用于将流量路由到全球分布式应用程序上的公共终结点。 这可以跨区域支持主动-主动或主动-被动拓扑。
注意
可以使用区域服务(例如应用程序网关或 API 管理)跨多个区域的后端进行负载均衡,并通过单个控制平面控制路由。 可以使用 跨区域专用链接、全局虚拟网络对等互连,甚至其他区域中的公共服务 IP 实现该体系结构。
此方案不是此决定的主要点。
将区域资源用作全球分布式后端的路由器会引入区域单一故障点,并产生额外的延迟,因为流量在转到另一个区域之前强制通过一个区域,然后再次返回。
平台即服务(PaaS) 提供托管托管托管环境,可在其中部署应用程序,而无需管理 VM 或网络资源。 在本例中,PaaS 是指在区域内提供集成负载均衡的服务。 有关详细信息,请参阅选择计算服务 - 可伸缩性。
使用 Azure Kubernetes 服务(AKS), 可以部署和管理容器化应用程序。 AKS 提供无服务器 Kubernetes(一种整合的持续集成和持续交付体验)以及企业级安全性和管理。 有关 AKS 体系结构资源的详细信息,请参阅 Azure Kubernetes 服务体系结构设计。
基础结构即服务(IaaS) 是一种计算选项,可在其中预配所需的虚拟机以及关联的网络和存储组件。 IaaS 应用程序需要使用 Azure 负载均衡器在虚拟网络中进行内部负载均衡。
应用程序层处理 是指虚拟网络中的特殊路由。 示例包括跨 VM 或虚拟机规模集的基于路径的路由。 有关详细信息,请参阅 何时应在 Azure Front Door 后面部署应用程序网关?
仅 API 是指需要对不是 Web 应用程序的 HTTP API 进行负载均衡。 在这种情况下,应考虑 Azure API 管理跨 API 后端对流量进行负载均衡,这些流量尚未通过另一种机制进行负载均衡。
性能加速 是指加速 Web 访问的功能。 这可以通过使用内容分发网络 (CDN) 或优化的接入点入口来实现,以便客户端加速加入目标网络。 Azure Front Door 支持 CDN 和 Anycast 流量加速。 可以在体系结构中使用或不带应用程序网关这两种功能的优势。
其他注意事项
每个负载均衡服务还具有应考虑的功能支持或实现详细信息。 下面是可能与负载均衡方案相关的一些示例:
- WebSockets 支持
- 服务器发送的事件支持
- HTTP/2 支持(接收和继续后端节点)
- 粘滞会话支持
- 后端节点运行状况监视机制
- 客户端体验或不正常节点检测与从路由逻辑中删除之间的延迟。
将功能卸载到负载均衡器
Azure 中的某些负载均衡选项允许将功能从后端节点卸载到负载均衡器,因为有些选项实现了 网关卸载 云设计模式。 例如,应用程序网关可以卸载 TLS,因此工作负荷的面向公众的证书在一个位置而不是跨后端节点进行管理。 API 管理可配置为卸载一些基本授权问题,例如验证 JWT 访问令牌中的声明。 卸载跨切问题有助于降低后端逻辑的复杂性并提高其性能。
示例
下表列出了基于解决方案中使用的负载均衡服务的各种文章。
服务 | 项目 | 说明 |
---|---|---|
负载均衡器 | 跨可用区域对虚拟机 (VM) 进行负载均衡 | 跨可用区域对 VM 进行负载均衡有助于在整个数据中心发生故障或服务中断(这种情况很少见)时保护应用和数据。 使用区域冗余时,一个或多个可用性区域可能会发生故障,而数据路径可以幸存,但前提是该区域中有一个局部区域保持正常。 |
Traffic Manager | 可实现高可用性和灾难恢复的多层 Web 应用程序 | 部署为高可用性和灾难恢复而生成的可复原多层应用程序。 如果主要区域变得不可用,则流量管理器将故障转移到次要区域。 |
应用程序网关 + API 管理 | Azure API 管理登陆区域体系结构 | 使用应用程序网关卸载 WAF 和 TLS。 使用 API 管理跨 API 后端进行负载均衡。 |
流量管理器 + 应用程序网关 | 使用流量管理器和应用程序网关实现多区域负载均衡 | 了解如何在多个 Azure 区域中为 Web 工作负载提供服务并部署可复原多层应用程序,以实现高可用性和可靠的灾难恢复基础结构。 |