

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 什么是 Application Load Balancer？
<a name="introduction"></a>

弹性负载均衡 在一个或多个可用区中的多个目标（如 EC2 实例、容器和 IP 地址）之间自动分配传入的流量。它会监控已注册目标的运行状况，并仅将流量传输到运行状况良好的目标。弹性负载均衡 根据传入流量随时间的变化对负载均衡器进行扩展。它可以自动扩展来处理绝大部分工作负载。

弹性负载均衡 支持以下负载均衡器：应用程序负载均衡器、网络负载均衡器、Gateway Load Balancer 和经典负载均衡器。您可以选择最适合自己需求的负载均衡器类型。本指南讨论 Application Load Balancer。有关其他负载均衡器的更多信息，请参阅[网络负载均衡器用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/)、[网关负载均衡器用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/)和 [经典负载均衡器用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/)。

## Application Load Balancer 组件
<a name="application-load-balancer-components"></a>

*负载均衡器*充当客户端的单一接触点。负载均衡器在多个可用区中的多个目标 (例如 EC2 实例) 间分配应用程序的传入流量。这将提高应用程序的可用性。可以向您的负载均衡器添加一个或多个侦听器。

*侦听器*使用您配置的协议和端口检查来自客户端的连接请求。您为侦听器定义的规则确定负载均衡器如何将请求路由到其已注册目标。每条规则由优先级、一个或多个操作以及一个或多个条件组成。当规则的条件满足时，将执行其操作。您必须为每个侦听器定义默认规则，并且可以选择定义其他规则。

每个*目标组*使用您指定的协议和端口号将请求路由到一个或多个注册目标，例如 EC2 实例。您可以向多个目标组注册一个目标。您可以对每个目标组配置运行状况检查。在注册到目标组 (它是使用负载均衡器的侦听器规则指定的) 的所有目标上，执行运行状况检查。

下图介绍基本组成部分。请注意，每个侦听器包含一个默认规则，并且一个侦听器包含将请求路由到不同目标组的另一条规则。向两个目标组注册一个目标。

![\[基本 Application Load Balancer 的组件\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/application/images/component_architecture.png)


有关更多信息，请参阅以下文档：
+ [负载均衡器](application-load-balancers.md)
+ [侦听器](load-balancer-listeners.md)
+ [目标组](load-balancer-target-groups.md)

## Application Load Balancer 概述
<a name="application-load-balancer-overview"></a>

Application Load Balancer 在应用程序层正常工作，该层是开放系统互连 (OSI) 模型的第 7 层。负载均衡器收到请求后，将按照优先级顺序评估侦听器规则以确定应用哪个规则，然后从目标组中选择规则操作目标。可以配置侦听器规则，以根据应用程序流量的内容，将请求路由至不同的目标组。每个目标组的路由都是单独进行的，即使某个目标已在多个目标组中注册。可以配置目标组级别使用的路由算法。默认路由算法为轮询路由算法；或者，可以指定最少未完成请求路由算法。

可以根据需求变化在负载均衡器中添加和删除目标，而不会中断应用程序的整体请求流。弹性负载均衡 根据传输到应用程序的流量随时间的变化对负载均衡器进行扩展。弹性负载均衡 能够自动扩展来处理绝大部分工作负载。

您可以配置运行状况检查，这些检查可用来监控注册目标的运行状况，以便负载均衡器只能将请求发送到正常运行的目标。

有关更多信息，请参阅 *弹性负载均衡 用户指南*中的 [Elastic Load Balancing 工作原理](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html)

## 从经典负载均衡器迁移的好处
<a name="application-load-balancer-benefits"></a>

使用 Application Load Balancer 而不是经典负载均衡器具有以下好处：
+ 支持 [路径条件](rule-condition-types.md#path-conditions)。对于根据请求中的 URL 转发请求的侦听器，您可以为它配置规则。这让您可以将应用程序构造为较小的服务，并根据 URL 内容将请求路由到正确的服务。
+ 支持 [主机条件](rule-condition-types.md#host-conditions)。对于基于 HTTP 标头中主机字段转发请求的侦听器，您可以为它配置规则。这使您能够使用单个负载均衡器将请求路由到多个域。
+ 支持基于请求中的字段进行路由，例如 [HTTP 标头条件](rule-condition-types.md#http-header-conditions) 和方法、查询参数和源 IP 地址。
+ 支持将请求路由到单个 EC2 实例上的多个应用程序。您可以向多个目标组注册实例或 IP 地址，每个目标组都位于不同的端口。
+ 支持将请求从一个 URL 重定向到另一个 URL。
+ 支持返回自定义 HTTP 响应。
+ 支持通过 IP 地址注册目标，包括位于负载均衡器的 VPC 之外的目标。
+ 支持将 Lambda 函数注册为目标。
+ 支持负载均衡器在路由请求之前使用应用程序用户的企业或社交身份对这些用户进行身份验证。
+ 支持容器化的应用程序。计划任务时，Amazon Elastic Container Service (Amazon ECS) 可以选择一个未使用的端口，并可以使用此端口向目标组注册该任务。这样可以高效地使用您的群集。
+ Support 支持独立监控每项服务的运行状况，因为运行状况检查是在目标组级别定义的，许多 CloudWatch 指标是在目标组级别报告的。将目标组挂载到 Auto Scaling 组的功能使您能够根据需求动态扩展每个服务。
+ 访问日志包含附加信息，并以压缩格式存储。
+ 已改进负载均衡器性能。

要详细了解每种负载均衡器类型支持的功能，请参阅[弹性负载均衡功能](https://aws.amazon.com/elasticloadbalancing/features/)。

## 相关服务
<a name="application-load-balancer-related-services"></a>

弹性负载均衡 可与以下服务一起使用，以提高应用程序的可用性和可扩展性。
+ **Amazon EC2** — 在云中运行应用程序的虚拟服务器。您可以将负载均衡器配置为将流量路由到您的 EC2 实例。
+ **Amazon EC2 Auto Scaling** - 确保运行所需数量的实例（即使实例失败也是如此），并可让您根据实例需求的变化自动增加或减少实例数。如果您使用弹性负载均衡启用 Auto Scaling，则 Auto Scaling 启动的实例将自动向目标组注册，并且 Auto Scaling 终止的实例将自动从目标组注销。
+ **AWS Certificate Manager** – 在创建 HTTPS 侦听器时，您必须指定由 ACM 提供的证书。负载均衡器使用证书终止连接并解密来自客户端的请求。有关更多信息，请参阅 [应用程序负载均衡器的 SSL 证书](https-listener-certificates.md)。
+ **Amazon CloudWatch** — 使您能够监控您的负载均衡器并根据需要采取行动。有关更多信息，请参阅 [CloudWatch Application Load Balancer 的指标](load-balancer-cloudwatch-metrics.md)。
+ **Amazon ECS** — 使您能够在 EC2 实例集群上运行、停止和管理 Docker 容器。您可以将负载均衡器配置为将流量路由到您的容器。有关更多信息，请参阅 *Amazon Elastic Container Service 开发人员指南*中的[服务负载均衡](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)。
+ **AWS Global Accelerator** — 提高应用程序的可用性和性能。使用加速器在一个或多个 AWS 区域的多个负载均衡器之间分配流量。有关更多信息，请参见[AWS Global Accelerator 开发人员指南](https://docs.aws.amazon.com/global-accelerator/latest/dg/)。
+ **Route 53** — 通过将域名（例如）转换为计算机用于相互连接的数字 IP 地址（例如`www.example.com`），提供一种可靠且经济实惠的方式，将访问者引导到网站。`192.0.2.1` AWS 分配 URLs 给您的资源，例如负载均衡器。不过，您可能希望使用方便用户记忆的 URL。例如，您可以将域名映射到负载均衡器。有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[将流量路由到 ELB 负载均衡器](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-elb-load-balancer.html)。
+ **AWS WAF**— 您可以 AWS WAF 与 Application Load Balancer 配合使用，根据网络访问控制列表 (Web ACL) 中的规则允许或阻止请求。有关更多信息，请参阅 [AWS WAF](load-balancer-integrations.md#load-balancer-waf)。

要查看有关与您的负载均衡器集成的服务的信息，请在中选择您的负载均衡器， AWS 管理控制台 然后选择**集成服务**选项卡。

## 定价
<a name="application-load-balancer-pricing"></a>

利用负载均衡器，您可以按实际用量付费。有关更多信息，请参阅 [弹性负载均衡 定价](https://aws.amazon.com/elasticloadbalancing/pricing/)。