Application Load Balancer
使用针对现代化应用程序实现的高级请求路由对 HTTP 和 HTTPS 流量进行负载均衡。
Application Load Balancer 在请求级别(第 7 层)运行,根据请求的内容将流量路由到目标(EC2 实例、容器、IP 地址和 Lambda 函数)。Application Load Balancer 非常适合 HTTP 和 HTTPS 流量的高级负载均衡,提供针对现代化应用程序架构(包括微服务和基于容器的应用程序)实现的高级请求路由。Application Load Balancer 可确保始终使用最新的 SSL/TLS 密码和协议,从而简化并提高应用程序的安全性。
功能
第 7 层负载均衡
您可以根据请求属性(例如 X-Forwarded-For 标头)对目标(Amazon EC2 实例、微服务和容器)的 HTTP/HTTPS 流量进行负载均衡。
安全功能
使用 Amazon Virtual Private Cloud (VPC) 时,您可以创建和管理与 Elastic Load Balancing 关联的安全组,以提供其他联网和安全选项。您可以将 Application Load Balancer 配置为面向 Internet 的负载均衡器,也可以创建一个没有公有 IP 地址的负载均衡器作为内部(非面向 Internet 的)负载均衡器。
ALB 支持基于 http_desync_guardian 库实施不同步保护。借助这项新功能,客户应用程序可以免受由于不同步引起的 HTTP 漏洞的侵害,而不会对可用性和/或延迟造成重大影响。客户还可以根据其应用程序架构选择对可疑请求的容忍级别。
HTTPS 支持
Application Load Balancer 支持客户端和负载均衡器之间的 HTTPS 终止。Application Load Balancer 还通过 Amazon Identity and Access Management (IAM) 和 Amazon Certificate Manager 为预定义的安全策略提供 SSL 证书管理。
HTTP/2 和 gRPC 支持
HTTP/2 是超文本传输协议 (HTTP) 的新版本,它使用单个多路复用连接允许在同一连接上发送多个请求。它还会压缩标头数据,然后再以二进制格式发送,并支持与客户端的 SSL 连接。
ALB 可以在微服务之间或启用了 gRPC 的客户端和服务之间路由和负载均衡 gRPC 流量。这样可以在架构中无缝引入 gRPC 流量管理,而无需更改客户端或服务上的任何底层基础设施。gRPC 使用 HTTP/2 进行传输,正在成为微服务架构中服务间通信的首选协议。它具有诸如高效的二进制序列化和对多种语言的支持等功能,此外还提供 HTTP/2 的固有优势,例如更小的网络占用空间,更低的压缩和双向流式传输,使其优于 REST 等旧式协议。
TLS 卸载
您可以创建使用加密连接(也称为 SSL 卸载)的 HTTPS 侦听器。此功能支持在负载均衡器与启动 SSL 或 TLS 会话的客户端之间进行流量加密。Application Load Balancer 支持客户端 TLS 会话终止。这样,您就可以将 TLS 终止任务卸载到负载均衡器,同时保留后端应用程序的源 IP 地址。您可以为 TLS 侦听器选择预定义的安全策略,以符合合规性和安全标准。Amazon Certificate Manager (ACM) 或 Amazon Identity and Access Management (IAM) 可用于管理您的服务器证书。
您可以使用 SNI 通过单个 TLS 侦听器为多个安全网站提供服务。如果客户端中的主机名与多个证书匹配,负载均衡器将根据智能选择算法选择要使用的最佳证书。
粘性会话
粘性会话是一种将来自同一客户端的请求路由到同一目标的机制。Application Load Balancer 支持基于持续时间的 Cookie 和基于应用程序的 Cookie。管理粘性会话的关键在于确定负载均衡器应持续将用户的请求路由到同一目标的时长。粘性会话在目标组级别启用。您可以在所有目标组中结合使用基于持续时间的粘性、基于应用程序的粘性和无粘性。
原生 IPv6 支持
Application Load Balancer 支持 VPC 中的原生 Internet 协议版本 6 (IPv6)。这将允许客户端通过 IPv4 或 IPv6 连接到 Application Load Balancer。
请求跟踪
Application Load Balancer 会在进入负载均衡器的所有请求上注入新的自定义标识符“X-Amzn-Trace-Id”HTTP 标头。请求跟踪允许您通过请求的唯一 ID 跟踪请求,因为它会跨越构成网站和分布式应用程序大部分流量的各种服务。您可以使用唯一的跟踪标识符以单个请求的粒度发现应用程序堆栈中的任何性能或时间问题。
重新导向
Application Load Balancer 可以将传入请求从一个 URL 重新导向到另一个 URL。这包括将 HTTP 请求重新导向到 HTTPS 请求的功能,这使您能够实现安全浏览的合规性目标,同时能够让您的网站获得更好的搜索排名和 SSL/TLS 评分。您还可以使用重新导向将用户发送到其他网站;例如,从旧版本的应用程序重新导向到新版本。
固定响应
Application Load Balancer 可以控制应用程序处理哪些客户端请求。这样,您就可以使用 HTTP 错误响应代码和来自负载均衡器本身的自定义错误消息来响应传入的请求,而无需将请求转发到应用程序。
WebSockets 支持
WebSockets 允许服务器与最终用户交换实时消息,而无需最终用户请求(或轮询)服务器进行更新。WebSockets 协议通过长时间运行的 TCP 连接在客户端和服务器之间提供双向通信渠道。
服务器名称指示 (SNI)
服务器名称指示 (SNI) 是 TLS 协议的扩展,客户端通过该协议在 TLS 握手开始时指示要连接的主机名。负载均衡器可以通过同一个安全侦听器提供多个证书,这使其能够使用单个安全侦听器支持多个安全网站。Application Load Balancer 还支持带有 SNI 的智能证书选择算法。如果客户端指示的主机名与多个证书匹配,则负载均衡器会根据包括客户端功能在内的多种因素来确定要使用的最佳证书。
IP 地址作为目标
您可以使用应用程序后端的 IP 地址作为目标对托管在亚马逊云科技或本地的任何应用程序进行负载均衡。这样一来,即可对托管在任何 IP 地址和实例上的任何接口上的应用程序后端进行负载均衡。托管在同一实例上的每个应用程序都可以有一个关联的安全组并使用相同的端口。您还可以使用 IP 地址作为目标,对在本地位置(通过 Direct Connect 或 VPN 连接)、对等 VPC 和 EC2-Classic(使用 ClassicLink)中托管的应用程序进行负载均衡。跨亚马逊云科技和本地资源进行负载均衡的能力有助于您迁移到云、突增到云或故障转移到云。
Lambda 函数作为目标
Application Load Balancer 支持调用 Lambda 函数来处理 HTTP(S) 请求,使用户能够从任何 HTTP 客户端(包括 Web 浏览器)访问无服务器应用程序。您可以将 Lambda 函数注册为负载均衡器的目标,并利用对基于内容的路由规则的支持将请求路由到不同的 Lambda 函数。对于使用服务器和无服务器计算的应用程序,您可以将 Application Load Balancer 用作通用 HTTP 终端节点。您可以使用 Lambda 函数构建整个网站,也可以结合 EC2 实例、容器、本地服务器和 Lambda 函数来构建应用程序。
基于内容的路由
如果您的应用程序由多个单独的服务组成,则 Application Load Balancer 可以根据请求的内容(例如主机字段、路径 URL、HTTP 标头、HTTP 方法、查询字符串或源 IP 地址)将请求路由到服务。
基于主机的路由:您可以根据 HTTP 标头的主机字段路由客户端请求,以便可以从同一负载均衡器路由到多个域。
基于路径的路由:您可以根据 HTTP 标头的 URL 路径来路由客户端请求。
基于 HTTP 标头的路由:您可以根据任何标准或自定义 HTTP 标头的值路由客户端请求。
基于 HTTP 方法的路由:您可以基于任何标准或自定义 HTTP 方法路由客户端请求。
基于查询字符串参数的路由:您可以根据查询字符串或查询参数路由客户端请求。
基于源 IP 地址 CIDR 的路由:您可以根据请求发起地的源 IP 地址 CIDR 路由客户端请求。
容器化应用程序支持
Application Load Balancer 通过在单个 Amazon EC2 实例上的多个端口之间进行负载均衡来提供增强的内容支持。与 Amazon EC2 Container Service (ECS) 的深度集成提供了完全托管式容器产品。使用 ECS,您可以在 ECS 任务定义中指定动态端口,这可为安排在 EC2 实例上的容器提供未使用的端口。ECS 调度器会使用此端口自动将任务添加到负载均衡器。
Web 应用程序防火墙
现在,您可以使用 Amazon WAF 保护 Application Load Balancer 上的 Web 应用程序。Amazon WAF 是一款 Web 应用程序防火墙,可帮助保护您的 Web 应用程序免受可能影响应用程序可用性、危及安全性或消耗过多资源的常见网络攻击。
带负载均衡算法的慢启动模式
Application Load Balancer 支持循环负载均衡算法。此外,Application Load Balancer 还支持循环算法的慢启动模式,该算法允许您添加新目标,而不会因为大量请求使新目标不堪重负。在慢启动模式下,目标会根据您指定的提升期限在接受其公平份额的请求之前进行预热。对于依赖于缓存且需要预热期才能以最佳性能响应请求的应用程序,慢启动非常有用。