为什么使用应用程序负载均衡器?
应用程序负载均衡器运行于请求级别(第 7 层),可根据请求的内容将流量路由至目标(EC2 实例、容器、IP 地址和 Lambda 函数)。应用程序负载均衡器最适合 HTTP 和 HTTPS 流量的高级负载均衡,面向交付包括微服务和基于容器的应用程序在内的现代应用程序架构,提供高级请求路由功能。应用程序负载均衡器通过确保始终使用最新的 SSL/TLS 密码和协议,简化并提高应用程序的安全性。
应用程序负载均衡器运行于请求级别(第 7 层),可根据请求的内容将流量路由至目标(EC2 实例、容器、IP 地址和 Lambda 函数)。应用程序负载均衡器最适合 HTTP 和 HTTPS 流量的高级负载均衡,面向交付包括微服务和基于容器的应用程序在内的现代应用程序架构,提供高级请求路由功能。应用程序负载均衡器通过确保始终使用最新的 SSL/TLS 密码和协议,简化并提高应用程序的安全性。
双向 TLS 是一种协议,用于在使用基于 x509 证书的身份的客户端和服务器之间进行双向身份验证。借助此功能,ALB 将验证客户端证书并对第三方证书颁发机构(CA)或私有证书颁发机构(ACM PCA)颁发的证书执行吊销检查。负载均衡器还会通过代理将客户端证书信息传送到目标,以用于应用程序的授权决策。
自动目标权重(ATW)使用新的加权随机负载平衡算法,即使在应用程序的目标受损时,也能提高应用程序的可用性。该算法将分析 HTTP 状态代码和 TCP/TLS 错误率,以识别出错误率高于同一目标组中的对等体的目标。当 ATW 识别出表现不佳的目标时,此功能会根据表现调整定向到每个目标的流量,帮助出现问题的目标成功恢复。
您可以根据请求属性(例如 X-Forwarded-For 标头)对发往目标(Amazon EC2 实例、微服务和容器)的 HTTP/HTTPS 流量进行负载平衡。
使用 Amazon Virtual Private Cloud (VPC) 时,您可以创建和管理与 Elastic Load Balancing 关联的安全组,以提供更多联网和安全选项。您可以将应用程序负载均衡器配置为面向 Internet,也可创建一个没有公有 IP 地址的负载均衡器,并将其用作内部(非面向 Internet 的)负载均衡器。
ALB 支持基于 http_desync_guardian 库实施异步保护。有了这项新功能,客户应用程序可以免受异步导致的 HTTP 漏洞侵害,而不会对可用性和/或延迟产生重大影响。客户还可以根据其应用程序架构选择对可疑请求的容忍级别。
应用程序负载均衡器(ALB)支持 AWS Outposts,这是一项完全托管的服务,可将 AWS 基础设施、服务和工具扩展到几乎任何数据中心、托管位置或本地设施,以提供真正一致的混合体验。客户可以在支持的实例类型上预置 ALB,ALB 将自动扩展到机架上的可用容量,以适应不同级别的应用程序负载,而无需手动干预。客户还可以收到通知,以帮助他们浏览与负载平衡相关的容量需求。客户可以使用相同的 AWS 管理控制台、API 和 CLI 在 Outposts 预置和管理 ALB,就像如今在该区域使用 ALB 一样。
Application Load Balancer 支持在客户端和负载均衡器之间终止 HTTPS。应用程序负载均衡器还可通过 AWS Identity and Access Management(IAM)和 AWS Certificate Manager 管理 SSL 证书,以实现预定义的安全策略。
HTTP/2 是新版本的超文本传输协议(HTTP),使用单个多路复用连接,支持通过同一连接发送多个请求。它还可以压缩标头数据,然后以二进制格式发送这些数据,并支持使用 SSL 连接客户端。
ALB 可以在微服务之间或启用 gRPC 的客户端和服务之间路由 gRPC 流量并对其进行负载平衡。这允许在架构中无缝引入 gRPC 流量管理,而无需更改客户的客户端或服务中的任何底层基础架构。gRPC 使用 HTTP/2 进行传输,并将成为微服务架构中服务间通信的首选协议。它具有高效的二进制序列化和多种语言支持等功能,此外还具有 HTTP/2 的固有优势,例如更少的网络占用空间、压缩和双向流式传输,使其胜过 REST 等传统协议。
您可以创建使用加密连接(也称为 SSL 卸载)的 HTTPS 侦听器。此功能支持您的负载均衡器与发起 SSL 或 TLS 会话的客户端之间的流量加密。应用程序负载均衡器支持客户端 TLS 会话终止。它让您能够将 TLS 终止任务卸载到负载均衡器,同时为后端应用程序保留源 IP 地址。您可以从 TLS 侦听器的预定义安全策略中作出选择以满足合规性与安全性标准。AWS Certificate Manager (ACM) 或 AWS Identity and Access Management (IAM) 可用于管理您的服务器证书。
您可以借助 SNI 用单 TLS 侦听器服务于多个安全网站。如果客户端中的主机名与多个证书匹配,负载均衡器将根据智能选择算法选择可使用的最佳证书。
粘滞会话是将同一客户端的请求路由至同一目标的一种机制。应用程序负载均衡器支持基于持续时间的 Cookie 和基于应用程序的 Cookie。管理粘滞会话的关键是确定您的负载均衡器应在多长时间内持续将用户的请求路由到同一个目标。在目标组级别启用粘滞会话。您可以将基于持续时间的粘性、基于应用程序的粘性和无粘性的组合用于所有目标群体。
在 VPC 中,应用程序负载均衡器支持本机 Internet 协议版本 6(IPv6)。如此一来,客户端可以通过 IPv4 或 IPv6 连接到应用程序负载均衡器。
应用程序负载均衡器将在所有传入负载均衡器的请求中注入新的自定义标识符“X-Amzn-Trace-Id”HTTP 标头。当请求通过组成您的网站和分布式应用程序所产生的大量流量的各项服务时,请求跟踪功能可让您通过请求的唯一 ID 对其进行跟踪。您可以使用唯一跟踪标识符,在单个请求的粒度上发现应用程序堆栈内的任何性能或计时问题。
应用程序负载均衡器可以将入站请求从一个 URL 重定向到另一个 URL。这包括将 HTTP 请求重定向到 HTTPS 请求的功能,这使您可以实现安全浏览的合规性目标,同时能够为您的站点实现更好的搜索排名和 SSL/TLS 分数。您还可以使用重定向将用户引导至其他网站,例如从旧版本的应用程序重定向到新版本。
Application Load Balancer 能够控制您的应用程序为哪些客户端请求提供服务。这使您可以使用 HTTP 错误响应代码和来自负载均衡器本身的自定义错误消息来响应入站请求,而无需将请求转发给应用程序。
借助 WebSocket,服务器可以与最终用户交换实时消息,且最终用户无需请求(或轮询)服务器提供更新。WebSocket 协议通过一个长期运行的 TCP 连接,在客户端和服务器之间提供双向通信渠道。
服务器名称指示 (SNI) 是 TLS 协议的延伸,客户端使用该协议在 TLS 握手开始时指定要连接的主机名。这样,负载均衡器可以通过同一安全侦听器提供多个证书,从而能够使用一个安全侦听器支持多个安全网站。借助 SNI,Application Load Balancer 还可支持智能证书选择算法。如果客户端指定的主机名与多个证书匹配,负载均衡器会根据多个因素 (包括客户端功能) 确定要使用的最佳证书。
您可以将应用程序后端的 IP 地址用作目标,对 AWS 或本地位置托管的任何应用程序进行负载均衡。这样一来,您就可以对托管在实例上的任意 IP 地址和任意接口上的应用程序后端进行负载均衡。托管在同一实例上的每个应用程序都有关联的安全组,并使用同一端口。此外,您还可以将 IP 地址用作目标,对托管在本地位置(通过 Direct Connect 或 VPN 连接)、对等 VPC 和 EC2-Classic(使用 ClassicLink)中的应用程序进行负载均衡。通过在 AWS 和本地资源之间进行负载均衡,您可以迁移至云、爆发至云或故障转移至云。
Application Load Balancer 支持调用 Lambda 函数来处理 HTTP(s) 请求,使用户能够从任何 HTTP 客户端(包括 Web 浏览器)访问无服务器应用程序。您可以将 Lambda 函数注册为目标,并利用对基于内容的路由规则的支持,将请求路由到不同的 Lambda 函数。您可以将 Application Load Balancer 用作使用服务器和无服务器计算的应用程序的通用 HTTP 终端节点。您可以使用 Lambda 函数构建整个网站,也可以将 EC2 实例、容器、本地服务器和 Lambda 函数组合在一起构建应用程序。
如果您的应用程序由几个不同的服务构成,则应用程序负载均衡器可以基于请求的内容(例如,主机字段、路径 URL、HTTP 标头、HTTP 方法、查询字符串或源 IP 地址)将请求路由至某个服务。
基于主机的路由:您可以基于 HTTP 标头的“主机”字段路由客户端请求,以便您从同一个负载均衡器路由到多个域。
基于路径的路由:您可以基于 HTTP 标头的 URL 路径路由客户端请求。
基于 HTTP 标头的路由:您可以基于任何标准或自定义 HTTP 标头的值路由客户端请求。
基于 HTTP 方法的路由:您可以基于任何标准或自定义 HTTP 方法路由客户端请求。
基于查询字符串参数的路由:您可以基于查询字符串或查询参数路由客户端请求。
基于源 IP 地址 CIDR 的路由:您可以基于请求发出的源 IP 地址 CIDR 路由客户端请求。
应用程序负载均衡器通过在单个 Amazon EC2 实例上的多个端口之间进行负载均衡来提供增强的容器支持。与 Amazon Elastic Container Service(ECS)的深度集成可提供完全托管的容器服务。借助 ECS,您可以在 ECS 任务定义中指定一个动态端口,以便在将容器安排到 EC2 实例上时为其提供一个未使用的端口。ECS 计划程序会自动使用该端口将任务添加到负载均衡器。
您现在可以使用 AWS WAF 来保护 Application Load Balancer 上的 Web 应用程序。AWS WAF 是一款 Web 应用程序防火墙,帮助保护您的 Web 应用程序免受常见 Web 漏洞的攻击,这些漏洞会影响应用程序可用性、损害安全性或消耗过多的资源。
应用程序负载均衡器支持循环的负载均衡算法。此外,应用程序负载均衡器支持使用循环算法的慢启动模式,允许您添加新目标但不会用大量请求占用新目标。在慢启动模式下,目标在接受指定份额的请求之前,会根据您指定的上升期限进行预热。对于依赖缓存并需要预热期才能响应请求以达到最佳性能的应用程序来说,慢启动非常有用。
您可以将身份验证功能从您的应用程序转移到应用程序负载均衡器。应用程序负载均衡器会在用户访问云应用程序时对用户进行安全的身份验证。Application Load Balancer 与 Amazon Cognito 无缝集成,后者允许最终用户通过社交身份提供程序(例如 Google、Facebook 和 Amazon)、利用 SAML 通过企业身份提供程序(例如 Microsoft Active Directory)或通过与 OpenID Connect 兼容的身份提供程序 (IdP) 进行身份验证。如果您已经有与 OpenID Connect 兼容的自定义 IdP 解决方案,应用程序负载均衡器还可以直接连接您的身份提供程序,对企业用户进行身份验证。