

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

# Elastic Beanstalk 环境的负载均衡器
<a name="using-features.managing.elb"></a>

负载均衡器在环境的实例之间分配流量。[启用负载平衡](using-features-managing-env-types.md#using-features.managing.changetype)后， AWS Elastic Beanstalk 会创建一个专用于您的环境的 [Elastic Loa](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/) d Balancing 负载均衡器。Elastic Beanstalk 全面管理此负载均衡器，负责安全设置，并在终止环境时终止负载均衡器。

或者，您可以选择跨多个 Elastic Beanstalk 环境共享负载均衡器。使用共享的负载均衡器，您可以避免为每个环境设置专用负载均衡器，从而节省运营成本。您还要为您的环境使用的共享负载均衡器承担更多的管理责任。

Elastic Load Balancing 支持以下负载均衡器类型：
+ [经典负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) – 上一代负载均衡器。将 HTTP、HTTPS 或 TCP 请求流量路由到环境实例上的不同端口。
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) – 应用层负载均衡器。根据请求路径，将 HTTP 或 HTTPS 请求流量路由到环境实例上的不同端口。
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) – 网络层负载均衡器。将 TCP 请求流量路由到环境实例上的不同端口。支持主动和被动运行状况检查。

Elastic Beanstalk 支持所有三种负载均衡器类型。下表显示可以与两种使用模式一起使用的类型：


| 负载均衡器类型 | 专用 | 已共享 | 
| --- | --- | --- | 
|  Classic 负载均衡器  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[No\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-no.png) 否  | 
|  应用程序负载均衡器  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  | 
|  Network Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[No\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/icon-no.png) 否  | 

**注意**  
在**创建环境**控制台向导中禁用了经典负载均衡器（CLB）选项。如果某个现有的环境已经配置了经典负载均衡器，则可以使用 Elastic Beanstalk 控制台或 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) [克隆现有环境](using-features.managing.clone.md)，从而创建新环境。您还可以选择使用 EB CLI 或 [AWS CLI](environments-create-awscli.md) 创建配置了经典负载均衡器的新环境。这些命令行工具将使用 CLB 创建一个新环境，即使您的账户中尚不存在该环境。

默认情况下，当您使用 Elastic Beanstalk 控制台或 EB CLI 启用负载均衡时，Elastic Beanstalk 会为您的环境创建 Application Load Balancer。它将负载均衡器配置为侦听端口 80 上的 HTTP 流量，并将该流量转发到同一端口上的实例。您只能在创建环境期间选择您的环境使用的负载均衡器类型。稍后，您可以更改设置以管理运行环境的负载均衡器行为，但不能更改其类型。

**注意**  
您的环境所在的 VPC 必须至少有位于两个可用区中的子网，才能创建 Application Load Balancer。所有新 AWS 账户均包含 VPCs 符合此要求的默认账户。

请参阅以下主题以了解 Elastic Beanstalk 支持的每个负载均衡器类型、其功能和如何在 Elastic Beanstalk 环境中对其进行配置和管理，以及如何配置负载均衡器以[将访问日志上传](environments-cfg-loadbalancer-accesslogs.md)到 Amazon S3。

**Topics**
+ [配置经典负载均衡器](environments-cfg-clb.md)
+ [配置 Application Load Balancer](environments-cfg-alb.md)
+ [配置共享 Application Load Balancer](environments-cfg-alb-shared.md)
+ [配置 Network Load Balancer](environments-cfg-nlb.md)
+ [配置双堆栈 Elastic Beanstalk 负载均衡器](environments-cfg-elbv2-ipv6-dualstack.md)
+ [配置访问日志](environments-cfg-loadbalancer-accesslogs.md)

# 配置经典负载均衡器
<a name="environments-cfg-clb"></a>

[启用负载平衡](using-features-managing-env-types.md#using-features.managing.changetype)后，您的 AWS Elastic Beanstalk 环境将配备 Elastic Load Balancing 负载均衡器，用于在环境中的实例之间分配流量。Elastic Load Balancing 支持多种负载均衡器类型。要了解更多信息，请参阅 [Elastic Load Balancing 用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)。Elastic Beanstalk 可以为您创建负载均衡器，或者让您指定已创建的共享负载均衡器。

本主题介绍 Elastic Beanstalk 创建并专用于您的环境的 [经典负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) 的配置。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息，请参阅[Elastic Beanstalk 环境的负载均衡器](using-features.managing.elb.md)。

**注意**  
您只能在创建环境期间选择您的环境使用的负载均衡器类型。稍后，您可以更改设置以管理运行环境的负载均衡器行为，但不能更改其类型。

## 简介
<a name="environments-cfg-clb-intro"></a>

[经典负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) 是 Elastic Load Balancing 的上一代负载均衡器。它支持将 HTTP、HTTPS 或 TCP 请求流量路由到环境实例上的不同端口。

当您的环境使用经典负载均衡器时，默认情况下，Elastic Beanstalk 会将其配置为[侦听](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html)端口 80 上的 HTTP 流量并转发给同一端口上的实例。虽然您无法删除端口 80 默认侦听器，但您可以将其禁用，这通过阻止流量来实现相同的功能。请注意，您可以添加或删除其他侦听器。要支持安全的连接，您可以使用端口 443 上的侦听器和 TLS 证书来配置负载均衡器。

负载均衡器使用运行[状况检查](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html)来确定运行您的应用程序的 Amazon EC2 实例是否运行正常。运行状况检查会按设置的时间间隔对指定的 URL 发出请求。如果 URL 返回错误消息，或者在指定的超时期间内无法返回任何消息，则表示运行状况检查失败。

如果您的应用程序通过满足来自单一服务器上的同一客户端的多个请求来提高性能，您可以将负载均衡器配置为使用[粘性会话](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html)。对于粘性会话，负载均衡器会将一个 Cookie 添加到 HTTP 响应中，用于识别提供请求的 Amazon EC2 实例。当从同一客户端收到后续请求时，负载均衡器会使用 Cookie 将该请求发送到同一实例。

借助[跨区域负载均衡](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)，经典负载均衡器的每个负载均衡器节点会跨所有启用的可用区中的已注册实例平均分配请求。如果禁用了跨区域负载均衡，则每个负载均衡器节点会仅在其可用区中的已注册实例之间平均分配请求。

如果由于运行状况不佳或缩减环境规模而从负载均衡器中删除一个实例，[Connection Draining](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html) 将为该实例留出一些时间以完成请求，然后再关闭实例和负载均衡器之间的连接。您可以更改为实例预留的用于发送响应的时间量，或完全禁用连接耗尽。

**注意**  
在您使用 Elastic Beanstalk 控制台或 EB CLI 创建环境时，默认情况下将启用 Connection Draining。对于其他客户端，您可以使用[配置选项](#environments-cfg-clb-namespace)启用该功能。

您可以使用高级负载均衡器设置在任意端口上配置侦听器，修改其他粘性会话设置，并将负载均衡器配置为安全地连接到 EC2 实例。这些设置是通过[配置选项](#environments-cfg-clb-namespace)提供的，您可以使用源代码中的配置文件设置这些选项，也可以使用 Elastic Beanstalk API 直接在环境中设置这些选项。在 Elastic Beanstalk 控制台中也提供了其中的很多设置。此外，您还可以将负载均衡器配置为[将访问日志上传](environments-cfg-loadbalancer-accesslogs.md)到 Amazon S3。

## 使用 Elastic Beanstalk 控制台配置经典负载均衡器
<a name="environments-cfg-clb-console"></a>

在创建环境期间或以后运行您的环境时，您可以使用 Elastic Beanstalk 控制台配置经典负载均衡器的端口、HTTPS 证书和其他设置。

**注意**  
在**创建环境**控制台向导中禁用了经典负载均衡器（CLB）选项。如果某个现有的环境已经配置了经典负载均衡器，则可以使用 Elastic Beanstalk 控制台或 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) [克隆现有环境](using-features.managing.clone.md)，从而创建新环境。您还可以选择使用 EB CLI 或 [AWS CLI](environments-create-awscli.md) 创建配置了经典负载均衡器的新环境。这些命令行工具将使用 CLB 创建一个新环境，即使您的账户中尚不存在该环境。

**在 Elastic Beanstalk 控制台中配置正在运行环境的经典负载均衡器**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。
**注意**  
如果 **Load balancer (负载均衡器)** 配置类别没有 **Edit (编辑)** 按钮，则表示您的环境没有负载均衡器。要了解如何设置负载均衡器，请参阅[更改环境类型](using-features-managing-env-types.md#using-features.managing.changetype)。

1. 根据环境需要进行经典负载均衡器配置更改。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

**Topics**
+ [侦听器](#using-features.managing.elb.listeners)
+ [会话](#using-features.managing.elb.sessions)
+ [跨可用区负载均衡](#using-features.managing.elb.cross-zone)
+ [连接耗尽](#using-features.managing.elb.draining)
+ [健康检查](#using-features.managing.elb.healthchecks)

### 侦听器
<a name="using-features.managing.elb.listeners"></a>

可以使用该列表为您的负载均衡器指定侦听器。每个侦听器使用指定协议将指定端口上的传入客户端流量路由到您的实例。最初，该列表显示默认侦听器，它将端口 80 上的传入 HTTP 流量路由到侦听端口 80 上的 HTTP 流量的环境实例服务器。

**注意**  
虽然您无法删除端口 80 默认侦听器，但您可以将其禁用，这通过阻止流量来实现相同的功能。

![\[经典负载均衡器配置 – 编辑侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners.png)


**配置现有的侦听器**

1. 选中表条目旁边的复选框，选择**操作**，然后选择所需的操作。

1. 如果您选择**编辑**，请使用 **经典负载均衡器侦听器** 对话框编辑设置，然后选择**保存**。

例如，您可以编辑默认侦听器并将**协议**从 **HTTP** 更改为 **TCP**（如果您希望负载均衡器按原样转发请求）。这可防止负载均衡器重写标头 (包括 `X-Forwarded-For`)。该方法不适用于粘性会话。

![\[经典负载均衡器配置 – 将默认侦听器的协议更改为 TCP\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-tcp.png)


**添加侦听器**

1. 选择**添加侦听器**。

1. 在 **经典负载均衡器侦听器** 对话框中，配置所需的设置，然后选择**添加**。

添加安全侦听器是一个常见案例。下图中的示例为端口 443 上的 HTTPS 流量添加侦听器。该侦听器将传入流量路由到侦听端口 443 上的 HTTPS 流量的环境实例服务器。

确保您具有有效的 SSL 证书，然后才能配置 HTTPS 侦听器。请执行以下操作之一：
+ 如果 AWS Certificate Manager (ACM) [在您所在的 AWS 地区可用](https://docs.aws.amazon.com/general/latest/gr/acm.html)，请使用 ACM 创建或导入证书。有关请求 ACM 证书的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[请求证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。有关将第三方证书导入 ACM 中的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[导入证书](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。
+ 如果您所在的[AWS 地区没有 ACM，请将您](https://docs.aws.amazon.com/general/latest/gr/acm.html)现有的证书和密钥上传到 IAM。有关创建证书并将证书上传到 IAM 的更多信息，请参阅《*IAM 用户指南*》中的[使用服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

有关在 Elastic Beanstalk 中配置 HTTPS 和使用证书的更多详细信息，请参阅[为 Elastic Beanstalk 环境配置 HTTPS](configuring-https.md)。

对于 **SSL 证书**，选择 SSL 证书的 ARN。例如，`arn:aws:iam::123456789012:server-certificate/abc/certs/build` 或 `arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678`。

![\[经典负载均衡器配置 – 添加安全侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-https.png)


有关在 Elastic Beanstalk 中配置 HTTPS 和使用证书的详细信息，请参阅[为 Elastic Beanstalk 环境配置 HTTPS](configuring-https.md)。

### 会话
<a name="using-features.managing.elb.sessions"></a>

选中或清除**会话粘性已启用**框来启用或禁用粘性会话。使用 **Cookie 持续时间**配置粘性会话的持续时间，最多为 **1000000** 秒。在 **Load balancer ports (负载均衡器端口)** 列表上，选择默认策略 (`AWSEB-ELB-StickinessPolicy`) 应用于的侦听器端口。

![\[经典负载均衡器的会话粘性和持续时间设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-elb-sessions.png)


### 跨可用区负载均衡
<a name="using-features.managing.elb.cross-zone"></a>

选中或清除**跨多可用区的负载均衡已启用**框以启用或禁用跨区域负载均衡。

![\[经典负载均衡器跨区域负载均衡设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-elb-cross-zone.png)


### 连接耗尽
<a name="using-features.managing.elb.draining"></a>

选中或清除**连接耗尽已启用**框来启用或禁用连接耗尽。设置**耗尽超时**，最多为 **3600** 秒。

![\[经典负载均衡器的 Connection Draining 和耗尽超时设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-elb-draining.png)


### 健康检查
<a name="using-features.managing.elb.healthchecks"></a>

可以使用以下设置配置负载均衡器运行状况检查：
+ **Health check path (运行状况检查路径)** – 负载均衡器将运行状况检查请求发送到的路径。如果未设置路径，负载均衡器将尝试在端口 80 上建立 TCP 连接以验证运行状况。
+ **Timeout (超时)** – 等待运行状况检查响应的时间（秒）。
+ **Interval (间隔)** – 单个实例的两次运行状况检查间隔的时间（秒）。间隔必须大于超时。
+ **Unhealthy threshold (不正常阈值)** 和 **Healthy threshold (正常阈值)** – 在 Elastic Load Balancing 更改实例的运行状况之前，实例必须通过或未通过的运行状况检查次数。

![\[经典负载均衡器的运行状况检查设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-elb-healthcheck.png)


**注意**  
Elastic Load Balancing 运行状况检查不会影响环境的 Auto Scaling 组的运行状况检查行为。Amazon A EC2 uto Scaling 不会自动替换未通过 Elastic Load Balancing 运行状况检查的实例，除非您手动将 Amazon A EC2 uto Scaling 配置为这样做。有关详细信息，请参阅 [Elastic Beanstalk 环境的 Auto Scaling 运行状况检查设置](environmentconfig-autoscaling-healthchecktype.md)。

有关运行状况检查以及其对环境的总体运行状况的影响的更多信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

## 使用 EB CLI 配置经典负载均衡器
<a name="environments-cfg-clb-ebcli"></a>

当您运行 [**eb create**](eb3-create.md) 时，EB CLI 会提示您选择负载均衡器类型。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1):
```

按 **Enter** 以选择 `classic`。

您也可以使用 `--elb-type` 选项指定负载均衡器类型。

```
$ eb create test-env --elb-type classic
```

## 经典负载均衡器配置命名空间
<a name="environments-cfg-clb-namespace"></a>

您可以在以下命名空间中找到与经典负载均衡器相关的设置：
+ [`aws:elb:healthcheck`](command-options-general.md#command-options-general-elbhealthcheck) – 配置负载均衡器运行状况检查的阈值、检查间隔和超时。
+ [`aws:elasticbeanstalk:application`](command-options-general.md#command-options-general-elasticbeanstalkapplication) – 配置运行状态检查 URL。
+ [`aws:elb:loadbalancer`](command-options-general.md#command-options-general-elbloadbalancer) – 启用跨区域负载均衡 向负载均衡器分配安全组并覆盖 Elastic Beanstalk 创建的默认安全组。此命名空间还包含一些已弃用的选项，这些选项用于配置已由 `aws:elb:listener` 命名空间中的选项替代的标准侦听器和安全侦听器。
+ [`aws:elb:listener`](command-options-general.md#command-options-general-elblistener) – 在端口 80 上配置默认侦听器、在端口 443 上配置安全侦听器或在任何端口上配置针对任何协议的其他侦听器。如果您指定 `aws:elb:listener` 作为命名空间，设置适用于端口 80 上的默认监听器。如果您指定了端口 (例如 `aws:elb:listener:443`)，则在该端口上配置监听器。
+ [`aws:elb:policies`](command-options-general.md#command-options-general-elbpolicies) – 配置负载均衡器的其他设置。使用此命名空间中的选项在任意端口上配置侦听器，修改其他粘性会话设置，并将负载均衡器配置为安全地连接到 Amazon EC2 实例。

EB CLI 和 Elastic Beanstalk 控制台会对前面的选项应用建议的值。如果您需要使用配置文件来配置相同的项，则必须删除这些设置。有关更多信息，请参阅 [建议值](command-options.md#configuration-options-recommendedvalues)。

**Example .ebextensions/loadbalancer-terminatehttps.config**  
以下示例配置文件将在端口 443 上创建一个 HTTPS 侦听器，分配负载均衡器用于终止安全连接的证书，并禁用端口 80 上的默认侦听器。负载均衡器通过 HTTP: 80 将解密后的请求转发到您环境中的 EC2 实例。  

```
option_settings:
  aws:elb:listener:443:
    ListenerProtocol: HTTPS
    SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
    InstancePort: 80
    InstanceProtocol: HTTP
  aws:elb:listener:
    ListenerEnabled: false
```

# 配置 Application Load Balancer
<a name="environments-cfg-alb"></a>

[启用负载平衡](using-features-managing-env-types.md#using-features.managing.changetype)后，您的 AWS Elastic Beanstalk 环境将配备 Elastic Load Balancing 负载均衡器，用于在环境中的实例之间分配流量。Elastic Load Balancing 支持多种负载均衡器类型。要了解更多信息，请参阅 [Elastic Load Balancing 用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)。Elastic Beanstalk 可以为您创建负载均衡器，或者让您指定已创建的共享负载均衡器。

本主题介绍 Elastic Beanstalk 创建并专用于您的环境的 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) 的配置。另请参阅[配置共享 Application Load Balancer](environments-cfg-alb-shared.md)。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息，请参阅[Elastic Beanstalk 环境的负载均衡器](using-features.managing.elb.md)。

**注意**  
您只能在创建环境期间选择您的环境使用的负载均衡器类型。您可以更改设置以管理运行的环境的负载均衡器行为，但不能更改其类型。您也无法从专用负载均衡器切换到共享负载均衡器，反之亦然。

## 简介
<a name="environments-cfg-alb-intro"></a>

Application Load Balancer 检查应用程序网络协议层中的流量以确定请求的路径，以便将不同路径的请求传送到不同的目标。

当您的环境使用 Application Load Balancer 时，Elastic Beanstalk 默认情况下将其配置为执行与经典负载均衡器相同的功能。默认侦听器接收端口 80 上的 HTTP 请求并将它们分配到环境中的实例。您可以使用证书在端口 443 上添加一个安全的侦听器，以解密 HTTPS 流量、配置运行状况检查行为和将访问日志从负载均衡器推送到 Amazon Simple Storage Service (Amazon S3) 存储桶。

**注意**  
与 Classic Load Balancer 或网络负载均衡器不同，应用程序负载均衡器不能有传输层（第 4 层）TCP 或 SSL/TLS 侦听器。它仅支持 HTTP 和 HTTPS 侦听器。此外，它不能使用后端身份验证对负载均衡器和后端实例之间的 HTTPS 连接进行身份验证。

在 Elastic Beanstalk 环境中，您可以使用 Application Load Balancer 将特定路径的流量定向到 Web 服务器实例上的其他进程。使用经典负载均衡器，到一个侦听器的所有流量都将路由到后端实例上的一个端口。使用 Application Load Balancer，您可以在侦听器上配置多个*规则*，以将发往特定路径的请求路由到其他后端进程。您可以使用每个进程侦听的端口配置进程。

例如，您可能运行与主应用程序分开的登录进程。您的环境的实例上的主应用程序接受大部分请求并侦听端口 80，而您的登录进程侦听端口 5000 并接受发送到 `/login` 路径的请求。来自客户端的所有传入请求都是在端口 80 上传送的。通过使用 Application Load Balancer，您可以为端口 80 上的传入流量配置单个侦听器，并使用两个规则将流量路由到两个单独的进程，具体取决于请求中的路径。您可以添加自定义规则，将传输到 `/login` 的流量路由到侦听 5000 端口的登录进程。默认规则将所有其他流量路由到侦听端口 80 的主应用程序进程。

Application Load Balancer 规则将请求映射到*目标组*。在 Elastic Beanstalk 中，目标组是由*进程* 表示的。您可以为进程配置协议、端口和运行状况检查设置。进程代表在环境中的实例上运行的进程。默认进程是在您的应用程序前面运行的反向代理 (nginx 或 Apache) 的端口 80 上的一个侦听器。

**注意**  
在 Elastic Beanstalk 外部，一个目标组将映射到一组实例。一个侦听器可使用多个规则和多个目标组来基于路径将流量路由到不同的实例。在 Elastic Beanstalk 内部，您的环境中的所有实例均相同，因此会对在不同端口上侦听的过程进行区分。

经典负载均衡器将单个运行状况检查路径用于整个环境。使用 Application Load Balancer 时，每个进程都有一个单独的运行状况检查路径，由负载均衡器和 Elastic Beanstalk 增强型运行状况监控来监控。

要使用 Application Load Balancer，您的环境必须在默认或自定义 VPC 中，且必须有一个具有标准权限集的服务角色。如果您有较旧的服务角色，您可能需要对其[更新权限](iam-instanceprofile.md#iam-instanceprofile-addperms)以包含 `elasticloadbalancing:DescribeTargetHealth` 和 `elasticloadbalancing:DescribeLoadBalancers`。有关 Application Load Balancer 的更多信息，请参阅[什么是 Application Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)

**注意**  
Application Load Balancer 运行状况检查不使用 Elastic Beanstalk 运行状况检查路径。相反，它使用为每个进程单独配置的特定路径。

## 使用 Elastic Beanstalk 控制台配置 Application Load Balancer
<a name="environments-cfg-alb-console"></a>

在创建环境期间或以后运行您的环境时，您可以使用 Elastic Beanstalk 控制台配置 Application Load Balancer 的侦听器、进程和规则。

**环境创建期间，在 Elastic Beanstalk 控制台中配置 Application Load Balancer**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择**环境**。

1. 选择 [Create a new environment (创建新环境)](environments-create-wizard.md) 以开始创建环境。

1. 在向导的主页上，在选择**创建环境**之前，选择**配置更多选项**。

1. 选择**高可用性**配置预设。

   或者，在**容量**配置类别中配置**负载均衡**环境类型。有关更多信息，请参阅 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。

1. 如果尚未选择 **Application Load Balancer** 和 **Dedicated (专用)** 选项，请选择它们。  
![\[Elastic Load Balancing 配置页面 - 选择负载均衡器类型\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-type-chooser.png)

1. 根据环境需要进行任何 Application Load Balancer 配置更改。

1. 选择**保存**，然后进行您的环境所需的任何其他配置更改。

1. 选择**创建环境**。

**在 Elastic Beanstalk 控制台中配置正在运行环境的 Application Load Balancer**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。
**注意**  
如果 **Load balancer (负载均衡器)** 配置类别没有 **Edit (编辑)** 按钮，则表示您的环境没有负载均衡器。要了解如何设置负载均衡器，请参阅[更改环境类型](using-features-managing-env-types.md#using-features.managing.changetype)。

1. 根据环境需要进行 Application Load Balancer 配置更改。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

**Topics**
+ [侦听器](#environments-cfg-alb-console-listeners)
+ [进程](#environments-cfg-alb-console-processes)
+ [Rules](#environments-cfg-alb-console-rules)
+ [访问日志捕获](#environments-cfg-alb-console-logs)

### 侦听器
<a name="environments-cfg-alb-console-listeners"></a>

可以使用该列表为您的负载均衡器指定侦听器。每个侦听器使用指定协议将在指定端口上传入的客户端流量路由到实例上的一个或多个进程。最初，该列表显示默认侦听器，它将端口 80 上的传入 HTTP 流量路由到名为 **default** 的进程。

![\[Application Load Balancer 配置 – 侦听器列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners.png)


**配置现有的侦听器**

1. 选中表条目旁边的复选框，然后选择**操作**和**编辑**。

1. 使用 **Application Load Balancer 侦听器**对话框编辑设置，然后选择**保存**。

**添加侦听器**

1. 选择**添加侦听器**。

1. 在 **Application Load Balancer 侦听器**对话框中，配置所需的设置，然后选择**添加**。

使用 **Application Load Balancer 侦听器**对话框中的设置选择侦听器用于侦听流量的端口和协议，以及要将流量路由到的进程。如果您选择 HTTPS 协议，请配置 SSL 设置。

![\[Application Load Balancer 侦听器对话框\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-listener-dialog.png)


确保您具有有效的 SSL 证书，然后才能配置 HTTPS 侦听器。请执行以下操作之一：
+ 如果 AWS Certificate Manager (ACM) [在您所在的 AWS 地区可用](https://docs.aws.amazon.com/general/latest/gr/acm.html)，请使用 ACM 创建或导入证书。有关请求 ACM 证书的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[请求证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。有关将第三方证书导入 ACM 中的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[导入证书](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。
+ 如果您所在的[AWS 地区没有 ACM，请将您](https://docs.aws.amazon.com/general/latest/gr/acm.html)现有的证书和密钥上传到 IAM。有关创建证书并将证书上传到 IAM 的更多信息，请参阅《*IAM 用户指南*》中的[使用服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

有关在 Elastic Beanstalk 中配置 HTTPS 和使用证书的更多详细信息，请参阅[为 Elastic Beanstalk 环境配置 HTTPS](configuring-https.md)。

### 进程
<a name="environments-cfg-alb-console-processes"></a>

可以使用该列表为您的负载均衡器指定进程。进程是侦听器将流量路由到的目标。每个侦听器使用指定协议将在指定端口上传入的客户端流量路由到实例上的一个或多个进程。最初，该列表显示默认进程，它侦听端口 80 上的传入 HTTP 流量。

![\[Application Load Balancer 配置 – 进程列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-processes.png)


您可以编辑现有进程的设置或添加新的进程。要在列表中开始编辑或添加进程，请使用为[侦听器列表](#environments-cfg-alb-console-listeners)列出的相同步骤。将打开**环境进程**对话框。

**Topics**
+ [定义](#environments-cfg-alb-console-process-definition)
+ [健康检查](#environments-cfg-alb-console-process-healthchecks)
+ [会话](#environments-cfg-alb-console-process-sessions)

#### 定义
<a name="environments-cfg-alb-console-process-definition"></a>

可以使用以下设置定义进程：其**名称**以及它在其中侦听请求的**端口**和**协议**。

![\[Application Load Balancer 进程的名称、端口和协议设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### 健康检查
<a name="environments-cfg-alb-console-process-healthchecks"></a>

可以使用以下设置配置进程运行状况检查：
+ **HTTP code (HTTP 代码)** – 指定正常运行的进程的 HTTP 状态代码。
+ **Path (路径)** – 进程的运行状况检查请求路径。
+ **Timeout (超时)** – 等待运行状况检查响应的时间（秒）。
+ **Interval (间隔)** – 单个实例的两次运行状况检查间隔的时间（秒）。间隔必须大于超时。
+ **Unhealthy threshold (不正常阈值)** 和 **Healthy threshold (正常阈值)** – 在 Elastic Load Balancing 更改实例的运行状况之前，实例必须通过或未通过的运行状况检查次数。
+ **Deregistration delay (取消注册延迟)** – 在取消注册实例之前等待活动请求完成的时间（秒）。

![\[Application Load Balancer 进程的运行状况检查设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**注意**  
Elastic Load Balancing 运行状况检查不会影响环境的 Auto Scaling 组的运行状况检查行为。Amazon A EC2 uto Scaling 不会自动替换未通过 Elastic Load Balancing 运行状况检查的实例，除非您手动将 Amazon A EC2 uto Scaling 配置为这样做。有关详细信息，请参阅 [Elastic Beanstalk 环境的 Auto Scaling 运行状况检查设置](environmentconfig-autoscaling-healthchecktype.md)。

有关运行状况检查以及其对环境的总体运行状况的影响的更多信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

#### 会话
<a name="environments-cfg-alb-console-process-sessions"></a>

选中或清除**粘性策略已启用**框来启用或禁用粘性会话。使用 **Cookie 持续时间**配置粘性会话的持续时间，最多为 **604800** 秒。

![\[Application Load Balancer 进程的会话粘性设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-console-rules"></a>

可以使用该列表为负载均衡器指定自定义侦听器规则。规则将侦听器在特定路径模式上接收的请求映射到目标进程。每个侦听器可以具有多个规则，以将不同路径上的请求路由到实例上的不同进程。

规则具有数字优先级，它确定将规则应用于传入请求的优先顺序。对于您添加的每个新侦听器，Elastic Beanstalk 添加一个默认规则，它将侦听器的所有流量路由到默认进程。默认规则的优先顺序最低；如果同一侦听器没有与传入请求匹配的任何其他规则，则应用该规则。起初在您还未添加自定义规则时，该列表是空的。不会显示所有侦听器的默认规则。

![\[Application Load Balancer 配置 – 规则列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-rules.png)


您可以编辑现有规则的设置或添加新的规则。要在列表中开始编辑或添加规则，请使用为[侦听器列表](#environments-cfg-alb-console-listeners)列出的相同步骤。将打开**侦听器规则**对话框并包含以下设置：
+ **Name (名称)** – 规则的名称。
+ **Listener port (侦听器端口)** – 规则应用到的侦听器端口。
+ **Priority (优先级)** – 规则的优先级。优先级序号越小，优先顺序越靠前。侦听器的规则优先级必须是唯一的。
+ **Match conditions (匹配条件)** – 规则应用到的请求 URL 条件的列表。有两种类型的条件：**HostHeader**（网址的网域部分）和 **PathPattern**（网址的路径部分）。您最多可以添加五个条件。每个条件值的长度最多为 128 个字符，并且可以包含通配符。
+ **Process (进程)** – 负载均衡器将与规则匹配的请求路由到的进程。

在编辑任何现有规则时，您无法更改其**名称**和**侦听器端口**。

![\[Application Load Balancer 配置 – 规则列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


### 访问日志捕获
<a name="environments-cfg-alb-console-logs"></a>

使用这些设置配置 Elastic Load Balancing ，使其捕获包含有关发送到 Application Load Balancer 的请求详细信息的日志。默认情况下，已禁用访问日志捕获。在启用 **Store logs (存储日志)** 时，Elastic Load Balancing 将日志存储在您配置的 **S3 bucket (S3 存储桶)** 中。**Prefix (前缀)** 设置为日志指定存储桶中的顶级文件夹。Elastic Load Balancing 将日志放置在您前缀下名为 `AWSLogs` 的文件夹中。如果您不指定前缀，则 Elastic Load Balancing 会将其文件夹置于存储桶的根级。

**注意**  
如果您为访问日志捕获配置的 Amazon S3 存储桶不是 Elastic Beanstalk 为您的账户创建的存储桶，请务必为您的 (IAM) 用户添加具有相应权限 AWS Identity and Access Management 的用户策略。Elastic Beanstalk 提供的[托管用户策略](AWSHowTo.iam.managed-policies.md)仅涵盖对 Elastic Beanstalk 托管资源的权限。

有关访问日志的详细信息，包括权限和其他要求，请参阅 [Application Load Balancer 的访问日志](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html)。

![\[Application Load Balancer 配置 – 访问日志\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-logs.png)


## 示例：具有安全侦听器和两个进程的 Application Load Balancer
<a name="environments-cfg-alb-console-example"></a>

在此示例中，您的应用程序需要 end-to-end流量加密和单独的处理管理请求的流程。

为了配置您的环境的 Application Load Balancer 以满足这些要求，您删除默认侦听器，添加一个 HTTPS 侦听器，指示默认进程侦听端口 443 的 HTTPS，并为不同路径上的管理流量添加一个进程和侦听器规则。

**为该示例配置负载均衡器**

1. *添加安全侦听器。*对于**端口**，输入 **443**。对于**协议**，选择 **HTTPS**。对于 **SSL 证书**，选择 SSL 证书的 ARN。例如，**arn:aws:iam::123456789012:server-certificate/abc/certs/build** 或 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**。

   对于**默认进程**，保持选中 **default**。  
![\[Application Load Balancer 配置 – 添加安全侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-https.png)

   您现在可以查看列表上的其他侦听器。  
![\[Application Load Balancer 配置示例 – 具有两个侦听器的侦听器列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners2.png)

1. *禁用默认端口 80 HTTP 侦听器。*对于默认侦听器，关闭**已启用**选项。  
![\[Application Load Balancer 配置示例 – 禁用默认侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-disabled.png)

1. *将默认进程配置为 HTTPS。*选择默认进程，然后为**操作**选择**编辑**。对于**端口**，输入 **443**。对于**协议**，选择 **HTTPS**。  
![\[Application Load Balancer 配置示例 – 将默认进程配置为使用 HTTPS\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *添加一个管理进程。*对于**名称**，键入 **admin**。对于**端口**，输入 **443**。对于**协议**，选择 **HTTPS**。在**运行状况检查**下，为**路径**输入 **/admin**。  
![\[Application Load Balancer 配置示例 – 添加管理进程\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *为管理流量添加一个规则。*对于**名称**，键入 **admin**。对于 **Listener port (侦听器端口)**，键入 **443**。在 “**匹配条件**” 中，添加值为 a **PathPattern****/admin/\$1**。对于**进程**，选择 **admin**。  
![\[Application Load Balancer 配置示例 – 添加管理规则\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## 使用 EB CLI 配置 Application Load Balancer
<a name="environments-cfg-alb-ebcli"></a>

当您运行 [**eb create**](eb3-create.md) 时，EB CLI 会提示您选择负载均衡器类型。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2):
```

您也可以使用 `--elb-type` 选项指定负载均衡器类型。

```
$ eb create test-env --elb-type application
```

## Application Load Balancer 命名空间
<a name="environments-cfg-alb-namespaces"></a>

您可以在以下命名空间中找到与 Application Load Balancer 相关的设置：
+ `aws:elasticbeanstalk:environment` – 选择用于环境的负载均衡器类型。Application Load Balancer 的值为 `application`。

  无法在配置文件 ([.Ebextensions](ebextensions.md)) 中设置此选项。
+ `aws:elbv2:loadbalancer` – 将访问日志和应用于 Application Load Balancer 的其他设置作为一个整体配置。
+ `aws:elbv2:listener` – 在 Application Load Balancer 上配置侦听器。这些设置将映射到经典负载均衡器的 `aws:elb:listener` 中的设置。
+ `aws:elbv2:listenerrule` – 配置根据请求路径将流量路由到不同过程的规则。规则对于 Application Load Balancers 唯一。
+ `aws:elasticbeanstalk:environment:process` – 配置运行状况检查并为在您的环境的实例上运行的过程指定端口和协议。端口和协议设置将映射到经典负载均衡器上侦听器的 `aws:elb:listener` 中的实例端口和实例协议设置。运行状况检查设置将映射到 `aws:elb:healthcheck` 和 `aws:elasticbeanstalk:application` 命名空间中的设置。

**Example .ebextensions/ .config alb-access-logs**  
以下配置文件为带有 Application Load Balancer 的环境启用访问日志上传：  

```
option_settings:
  aws:elbv2:loadbalancer:
    AccessLogsS3Bucket: amzn-s3-demo-bucket
    AccessLogsS3Enabled: 'true'
    AccessLogsS3Prefix: beanstalk-alb
```

**Example .ebextensions/ .config alb-default-process**  
以下配置文件将修改默认进程的运行状况检查设置和粘性设置。  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '15'
    HealthCheckPath: /
    HealthCheckTimeout: '5'
    HealthyThresholdCount: '3'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: HTTP
    StickinessEnabled: 'true'
    StickinessLBCookieDuration: '43200'
```

**Example .ebextensions/ .config alb-secure-listener**  
以下配置文件将在端口 443 上添加一个安全侦听器和匹配进程。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/ .config alb-admin-rule**  
以下配置文件将添加一个安全侦听器，该侦听器具有一个规则，它使用请求路径 `/admin` 将流量路由到名为 `admin` 的在端口 4443 上进行侦听的进程。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    Rules: admin
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 配置共享 Application Load Balancer
<a name="environments-cfg-alb-shared"></a>

[启用负载平衡](using-features-managing-env-types.md#using-features.managing.changetype)后，您的 AWS Elastic Beanstalk 环境将配备 Elastic Load Balancing 负载均衡器，用于在环境中的实例之间分配流量。Elastic Load Balancing 支持多种负载均衡器类型。要了解更多信息，请参阅 [Elastic Load Balancing 用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)。Elastic Beanstalk 可以为您创建负载均衡器，或让您指定您已创建的共享负载均衡器。

本主题介绍您创建的并与环境关联的共享 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) 配置。另请参阅[配置 Application Load Balancer](environments-cfg-alb.md)。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息，请参阅[Elastic Beanstalk 环境的负载均衡器](using-features.managing.elb.md)。

**注意**  
您只能在创建环境期间选择您的环境使用的负载均衡器类型。您可以更改设置以管理运行的环境的负载均衡器行为，但不能更改其类型。您也无法从专用负载均衡器切换到共享负载均衡器，反之亦然。

## 简介
<a name="environments-cfg-alb-shared-intro"></a>

*共享负载均衡器*是您使用亚马逊弹性计算云 (Amazon EC2) 服务自行创建和管理的负载均衡器，然后在多个 Elastic Beanstalk 环境中使用。

在您创建负载均衡的自动扩展环境并选择使用 Application Load Balancer 时，Elastic Beanstalk 默认情况下都会相应创建一个专用于您的环境的负载均衡器。要了解什么是 Application Load Balancer 以及它如何用于 Elastic Beanstalk 环境，请参阅为 Elastic Beanstalk 配置 Application Load Balancer 的[简介](environments-cfg-alb.md#environments-cfg-alb-intro)。

在某些情况下，您可能想要节省拥有多个专用负载均衡器的成本。当您拥有多个环境时，这可能会很有帮助，例如，当您的应用程序是一组微服务，而不是一个整体服务时。在这种情况下，您可以选择使用共享的负载均衡器。

要使用共享负载均衡器，请先在 Amazon 中创建该负载均衡器， EC2 然后添加一个或多个侦听器。在创建 Elastic Beanstalk 环境期间，您随之提供负载均衡器并选择侦听器端口。Elastic Beanstalk 将侦听器与您环境中的默认进程相关联。您可以添加自定义侦听器规则，以将流量从特定主机标头和路径路由到其他环境进程。

Elastic Beanstalk 将标签添加到共享负载均衡器。标签名称为 `elasticbeanstalk:shared-elb-environment-count`，其值是共享此负载均衡器的环境数。

使用共享负载均衡器与使用专用负载均衡器在多个方面有所不同。


| 关于 | 专用 Application Load Balancer | 共享 Application Load Balancer | 
| --- | --- | --- | 
|  管理  |  Elastic Beanstalk 创建和管理负载均衡器、侦听器、侦听器规则和进程（目标组）。Elastic Beanstalk 还会在您终止环境时删除它们。如果选择该选项，Elastic Beanstalk 可以设置负载均衡器访问日志捕获。  |  您可以在 Elastic Beanstalk 之外创建并管理负载均衡器和侦听器。Elastic Beanstalk 创建并管理默认规则和默认进程，您可以添加规则和进程。Elastic Beanstalk 将删除环境创建期间添加的侦听器规则和进程。  | 
|  侦听器规则  |  Elastic Beanstalk 为每个侦听器创建一个默认规则，以将所有流量路由到侦听器的默认进程。  |  Elastic Beanstalk 仅将默认规则与端口 80 侦听器关联（如果存在）。如果选择不同的默认侦听器端口，则必须将默认规则与其关联（Elastic Beanstalk 控制台和 EB CLI 为您执行此操作）。 为解决共享负载均衡器的各环境间的侦听器规则条件冲突，Elastic Beanstalk 将环境的 CNAME 作为主机标头条件添加到侦听器规则中。 在共享负载均衡器的环境间，Elastic Beanstalk 将规则优先级设置视为相对优先级，并在创建过程中将其映射到绝对优先级。  | 
|  安全组  |  Elastic Beanstalk 创建默认安全组并将其附加到负载均衡器。  |  您可以配置一个或多个安全组以用于负载均衡器。如果您未配置，Elastic Beanstalk 将检查 Elastic Beanstalk 管理的某个现有安全组是否已连接到负载均衡器。如果没有，Elastic Beanstalk 将创建一个安全组并将其附加到负载均衡器。当最后一个共享负载均衡器的环境终止时，Elastic Beanstalk 将删除此安全组。  | 
|  更新  |  您可以在创建环境后更新您的 Application Load Balancer。您可以编辑侦听器、侦听器规则和进程。您可以配置负载均衡器访问日志捕获。  |  您不能使用 Elastic Beanstalk 在 Application Load Balancer 中配置访问日志捕获，也无法在创建环境后更新侦听器和侦听器规则。您只能更新进程（目标组）。要配置访问日志捕获以及更新侦听器和侦听器规则，请使用 Amazon EC2。  | 

## 使用 Elastic Beanstalk 控制台配置共享 Application Load Balancer
<a name="environments-cfg-alb-shared-console"></a>

环境创建期间，您可以使用 Elastic Beanstalk 控制台配置共享 Application Load Balancer。您可以选择账户的其中一个可共享的负载均衡器以供在环境中使用，选择默认侦听器端口，并配置其他进程和侦听器规则。

创建环境后，您无法在 Application Load Balancer 控制台中编辑共享 Application Load Balancer 配置。要配置侦听器、侦听器规则、进程（目标组）和访问日志捕获，请使用 Amazon EC2。

**环境创建期间，在 Elastic Beanstalk 控制台中配置 Application Load Balancer**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择**环境**。

1. 选择 [Create a new environment (创建新环境)](environments-create-wizard.md) 以开始创建环境。

1. 在向导的主页上，在选择**创建环境**之前，选择**配置更多选项**。

1. 选择**高可用性**配置预设。

   或者，在**容量**配置类别中配置**负载均衡**环境类型。有关更多信息，请参阅 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。

1. 如果尚未选择该选项，请选择 **Application Load Balancer** 选项，然后选择 **Shared (已共享)** 选项。  
![\[Elastic Load Balancing 配置页面 - 选择负载均衡器类型\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-type-chooser.png)

1. 根据环境需要进行任何共享 Application Load Balancer 配置更改。

1. 选择**保存**，然后进行您的环境所需的任何其他配置更改。

1. 选择**创建环境**。

**Topics**
+ [共享 Application Load Balancer](#environments-cfg-alb-shared-console-alb)
+ [进程](#environments-cfg-alb-shared-console-processes)
+ [Rules](#environments-cfg-alb-shared-console-rules)

### 共享 Application Load Balancer
<a name="environments-cfg-alb-shared-console-alb"></a>

使用此部分可以为您的环境选择共享的 Application Load Balancer 并配置默认流量路由。

在此处配置共享应用程序负载均衡器之前，请先使用 Amazon 在您的账户中定义至少一个 EC2 要与至少一个侦听器共享的应用程序负载均衡器。如果您尚未执行此操作，则可以选择 **Manage load balancers (管理负载均衡器)**。Elastic Beanstalk 在新的浏览器选项 EC2 卡中打开亚马逊控制台。

在 Elastic Beanstalk 外部配置完共享的负载均衡器后，请在此控制台部分配置以下设置：
+ **Load balancer ARN (负载均衡器 ARN)** – 要在此环境中使用的共享的负载均衡器。从负载均衡器列表中进行选择，或输入负载均衡器 Amazon Resource Name (ARN)。
+ **Default listener port (默认侦听器端口)** – 共享的负载均衡器所侦听的侦听器端口。从现有侦听器端口列表中进行选择。来自此侦听器的流量（在主机标头中具有环境的 CNAME）将路由到此环境中的默认进程。

![\[Application Load Balancer 配置 – 选择共享的负载均衡器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-alb.png)


### 进程
<a name="environments-cfg-alb-shared-console-processes"></a>

使用该列表为共享的负载均衡器指定进程。进程是侦听器将流量路由到的目标。最初，列表显示默认进程，该进程从默认侦听器接收流量。

![\[Application Load Balancer 配置 – 进程列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-processes.png)


**配置现有进程**

1. 选中表条目旁边的复选框，然后选择**操作**和**编辑**。

1. 使用**环境进程**对话框编辑设置，然后选择**保存**。

**添加进程**

1. 选择**添加进程**。

1. 在**环境进程**对话框中，配置所需的设置，然后选择**添加**。

**Topics**
+ [定义](#environments-cfg-alb-console-process-definition)
+ [健康检查](#environments-cfg-alb-shared-console-process-healthchecks)
+ [会话](#environments-cfg-alb-shared-console-process-sessions)

#### 定义
<a name="environments-cfg-alb-console-process-definition"></a>

可以使用以下设置定义进程：其**名称**以及它在其中侦听请求的**端口**和**协议**。

![\[Application Load Balancer 进程的名称、端口和协议设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


#### 健康检查
<a name="environments-cfg-alb-shared-console-process-healthchecks"></a>

可以使用以下设置配置进程运行状况检查：
+ **HTTP code (HTTP 代码)** – 指定正常运行的进程的 HTTP 状态代码。
+ **Path (路径)** – 进程的运行状况检查请求路径。
+ **Timeout (超时)** – 等待运行状况检查响应的时间（秒）。
+ **Interval (间隔)** – 单个实例的两次运行状况检查间隔的时间（秒）。间隔必须大于超时。
+ **Unhealthy threshold (不正常阈值)** 和 **Healthy threshold (正常阈值)** – 在 Elastic Load Balancing 更改实例的运行状况之前，实例必须通过或未通过的运行状况检查次数。
+ **Deregistration delay (取消注册延迟)** – 在取消注册实例之前等待活动请求完成的时间（秒）。

![\[Application Load Balancer 进程的运行状况检查设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-healthcheck.png)


**注意**  
Elastic Load Balancing 运行状况检查不会影响环境的 Auto Scaling 组的运行状况检查行为。Amazon A EC2 uto Scaling 不会自动替换未通过 Elastic Load Balancing 运行状况检查的实例，除非您手动将 Amazon A EC2 uto Scaling 配置为这样做。有关详细信息，请参阅 [Elastic Beanstalk 环境的 Auto Scaling 运行状况检查设置](environmentconfig-autoscaling-healthchecktype.md)。

有关运行状况检查以及其对环境的总体运行状况的影响的更多信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

#### 会话
<a name="environments-cfg-alb-shared-console-process-sessions"></a>

选中或清除**粘性策略已启用**框来启用或禁用粘性会话。使用 **Cookie 持续时间**配置粘性会话的持续时间，最多为 **604800** 秒。

![\[Application Load Balancer 进程的会话粘性设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-shared-console-rules"></a>

使用该列表为共享的负载均衡器指定自定义侦听器规则。规则将侦听器在特定路径模式上接收的请求映射到目标进程。每个侦听器可以有多个规则，将不同路径上的请求路由到共享侦听器的不同环境的实例上的不同进程。

规则具有数字优先级，它确定将规则应用于传入请求的优先顺序。Elastic Beanstalk 添加了一个默认规则，该规则将所有默认侦听器的流量路由到新环境的默认进程。默认规则的优先顺序最低；如果同一侦听器没有与传入请求匹配的任何其他规则，则应用该规则。起初在您还未添加自定义规则时，该列表是空的。不显示默认规则。

![\[Application Load Balancer 配置 – 规则列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-rules.png)


您可以编辑现有规则的设置或添加新的规则。要在列表中开始编辑或添加规则，请使用为[进程列表](#environments-cfg-alb-shared-console-processes)列出的相同步骤。将打开**侦听器规则**对话框并包含以下设置：
+ **Name (名称)** – 规则的名称。
+ **Listener port (侦听器端口)** – 规则应用到的侦听器端口。
+ **Priority (优先级)** – 规则的优先级。优先级序号越小，优先顺序越靠前。侦听器的规则优先级必须是唯一的。Elastic Beanstalk 将规则优先级视为跨共享环境的相对优先级，并在创建过程中将其映射到绝对优先级。
+ **Match conditions (匹配条件)** – 规则应用到的请求 URL 条件的列表。有两种类型的条件：**HostHeader**（网址的网域部分）和 **PathPattern**（网址的路径部分）。为环境子域保留了一个条件，您最多可以添加四个条件。每个条件值的长度最多为 128 个字符，并且可以包含通配符。
+ **Process (进程)** – 负载均衡器将与规则匹配的请求路由到的进程。

![\[Application Load Balancer 配置 – 规则列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


## 示例：使用共享的 Application Load Balancer 来保护 micro-service-based应用程序安全
<a name="environments-cfg-alb-shared-console-example"></a>

在此示例中，您的应用程序由几个微服务组成，每个微服务都作为一个 Elastic Beanstalk 环境实现。此外，您还需要对 end-to-end流量进行加密。我们将演示其中一个微服务环境，该环境具有用于用户请求的主流程和用于处理管理请求的单独流程。

要满足这些要求，请使用 Amazon 创建 A EC2 pplication Load Balancer，供您在微服务之间共享该负载均衡器。在端口 443 和 HTTPS 协议上添加安全侦听器。然后，将多个 SSL 证书添加到侦听器，每个微服务域一个。有关创建应用程序负载均衡器和安全侦听器的详细信息，请参阅《*应用程序负载均衡器用户指南*》中的[创建应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)和[为应用程序负载均衡器创建 HTTPS 侦听器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)。

在 Elastic Beanstalk 中，将每个微服务环境配置为使用共享 Application Load Balancer，并将默认侦听器端口设置为 443。对于我们在此演示的特定环境，指示默认进程侦听端口 443 上的 HTTPS，并为不同路径上的管理员流量添加进程和侦听器规则。

**为该示例配置共享的负载均衡器**

1. 在 **Shared Application Load Balancer（共享 Application Load Balancer）**部分中，选择您的负载均衡器，对于 **Default listener port（默认侦听器端口）**，选择 **443**。如果侦听器端口是负载均衡器拥有的唯一侦听器，则应该已选择该端口。  
![\[Application Load Balancer 配置 – 添加安全侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-example-alb.png)

1. *将默认进程配置为 HTTPS。*选择默认进程，然后为**操作**选择**编辑**。对于**端口**，输入 **443**。对于**协议**，选择 **HTTPS**。  
![\[Application Load Balancer 配置示例 – 将默认进程配置为使用 HTTPS\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *添加一个管理进程。*对于**名称**，请输入 **admin**。对于**端口**，输入 **443**。对于**协议**，选择 **HTTPS**。在**运行状况检查**下，为**路径**键入 **/admin**。  
![\[Application Load Balancer 配置示例 – 添加管理进程\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *为管理流量添加一个规则。*对于**名称**，请输入 **admin**。对于**侦听器端口**，输入 **443**。在 “**匹配条件**” 中，添加值为 a **PathPattern****/admin/\$1**。对于**进程**，选择 **admin**。  
![\[Application Load Balancer 配置示例 – 添加管理规则\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## 使用 EB CLI 配置共享 Application Load Balancer
<a name="environments-cfg-alb-shared-ebcli"></a>

当您运行 [**eb create**](eb3-create.md) 时，EB CLI 会提示您选择负载均衡器类型。如果您选择 `application`（默认设置），并且您的账户至少有一个可共享的 Application Load Balancer，EB CLI 还会询问您是否要使用共享的 Application Load Balancer。如果回答 **y**，还会提示您选择负载均衡器和默认端口。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 2): 

Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y

Select a shared load balancer
1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e
2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
(default is 1): 2

Select a listener port for your shared load balancer
1) 80
2) 100
3) 443
(default is 1): 3
```

还可以使用命令选项指定共享的负载均衡器。

```
$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443
```

## 共享 Application Load Balancer 命名空间
<a name="environments-cfg-alb-shared-namespaces"></a>

您可以在以下命名空间中找到与共享 Application Load Balancer 相关的设置：
+ `aws:elasticbeanstalk:environment` – 选择环境的负载均衡器类型，并告知 Elastic Beanstalk 您将使用共享的负载均衡器。

  无法在配置文件 ([.Ebextensions](ebextensions.md)) 中设置这两个选项。
+ `aws:elbv2:loadbalancer` – 配置共享 Application Load Balancer ARN 和安全组。
+ `aws:elbv2:listener` – 通过列出侦听器规则将共享 Application Load Balancer 的侦听器与环境进程相关联。
+ `aws:elbv2:listenerrule` – 配置根据请求路径将流量路由到不同进程的侦听器规则。规则对于 Application Load Balancer 是唯一的，无论是专用还是共享。
+ `aws:elasticbeanstalk:environment:process` – 配置运行状况检查并为在您的环境的实例上运行的过程指定端口和协议。

**Example .ebextensions/ .config application-load-balancer-shared**  
要开始使用共享 Application Load Balancer，请使用 Elastic Beanstalk 控制台、EB CLI 或 API 将负载均衡器类型设置为 `application`，然后选择使用共享的负载均衡器。使用[配置文件](ebextensions.md)以配置共享的负载均衡器。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
```

**注意**  
您只能在创建环境时配置此选项。

**Example .ebextensions/ .config alb-shared-secure-listener**  
以下配置文件为共享的负载均衡器选择端口 443 上的默认安全侦听器，并将默认进程设置为侦听端口 443。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/ .config alb-shared-admin-rule**  
以下配置文件在上一个示例的基础上构建，并添加了一条规则，该规则将请求路径为 `/admin` 的流量路由到一个名为 `admin` 的进程，该进程在端口 4443 上进行侦听。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default,admin
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 配置 Network Load Balancer
<a name="environments-cfg-nlb"></a>

[启用负载平衡](using-features-managing-env-types.md#using-features.managing.changetype)后，您的 AWS Elastic Beanstalk 环境将配备 Elastic Load Balancing 负载均衡器，用于在环境中的实例之间分配流量。Elastic Load Balancing 支持多种负载均衡器类型。要了解更多信息，请参阅 [Elastic Load Balancing 用户指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)。Elastic Beanstalk 可以为您创建负载均衡器，或者让您指定已创建的共享负载均衡器。

本主题介绍 Elastic Beanstalk 创建并专用于您的环境的 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) 的配置。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息，请参阅[Elastic Beanstalk 环境的负载均衡器](using-features.managing.elb.md)。

**注意**  
您只能在创建环境期间选择您的环境使用的负载均衡器类型。您可以更改设置以管理运行的环境的负载均衡器行为，但不能更改其类型。

## 简介
<a name="environments-cfg-nlb-intro"></a>

通过 Network Load Balancer，默认侦听器接受端口 80 上的 TCP 请求并将它们分配到环境中的实例。您可以配置运行状况检查行为、配置侦听器端口或在其他端口中添加侦听器。

**注意**  
与经典负载均衡器或 Application Load Balancer 不同，Network Load Balancer 不能有应用层（第 7 层）HTTP 或 HTTPS 侦听器。它仅支持传输层（第 4 层）TCP 侦听器。HTTP 和 HTTPS 流量可通过 TCP 路由到您的环境。要在 Web 客户端与您的环境之间建立安全的 HTTPS 连接，请在该环境的实例上安装[自签名证书](configuring-https-ssl.md)，并将该实例配置为在适当端口（通常为 443）上侦听并终止 HTTPS 连接。此配置根据不同平台而有所变化。有关说明，请参阅[在实例上配置 HTTPS 终止](https-singleinstance.md)：然后，配置您的 Network Load Balancer 以添加一个侦听器，该侦听器映射到在相应端口上侦听的进程。

Network Load Balancer 支持主动运行状况检查。这些检查基于到根 (`/`) 路径的消息。此外，Network Load Balancer 支持被动运行状况检查。它会自动检测有故障的后端实例并只将流量路由到正常运行的实例。

## 使用 Elastic Beanstalk 控制台配置 Network Load Balancer
<a name="environments-cfg-nlb-console"></a>

在创建环境期间或以后运行您的环境时，您可以使用 Elastic Beanstalk 控制台配置 Network Load Balancer 的侦听器和进程。

**环境创建期间，在 Elastic Beanstalk 控制台中配置 Network Load Balancer**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择**环境**。

1. 选择 [Create a new environment (创建新环境)](environments-create-wizard.md) 以开始创建环境。

1. 在向导的主页上，在选择**创建环境**之前，选择**配置更多选项**。

1. 选择**高可用性**配置预设。

   或者，在**容量**配置类别中配置**负载均衡**环境类型。有关更多信息，请参阅 [Capacity](environments-create-wizard.md#environments-create-wizard-capacity)。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。

1. 如果尚未选择 **Network Load Balancer** 选项，请选择该选项。  
![\[Elastic Load Balancing 配置页面 - 选择负载均衡器类型\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-type-chooser.png)

1. 根据环境需要进行任何 Network Load Balancer 配置更改。

1. 选择**保存**，然后进行您的环境所需的任何其他配置更改。

1. 选择**创建环境**。

**在 Elastic Beanstalk 控制台中配置正在运行环境的 Network Load Balancer**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。
**注意**  
如果 **Load balancer (负载均衡器)** 配置类别没有 **Edit (编辑)** 按钮，则表示您的环境没有负载均衡器。要了解如何设置负载均衡器，请参阅[更改环境类型](using-features-managing-env-types.md#using-features.managing.changetype)。

1. 根据环境需要进行 Network Load Balancer 配置更改。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

**Topics**
+ [侦听器](#environments-cfg-nlb-console-listeners)
+ [进程](#environments-cfg-nlb-console-processes)

### 侦听器
<a name="environments-cfg-nlb-console-listeners"></a>

可以使用该列表为您的负载均衡器指定侦听器。每个侦听器将指定端口上的传入客户端流量路由到您的实例上的进程。最初，该列表显示默认侦听器，它将端口 80 上的传入 HTTP 流量路由到名为 **default** 的进程，该进程侦听端口 80。

![\[Network Load Balancer 配置 – 侦听器列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listeners.png)


**配置现有的侦听器**

1. 选中表条目旁边的复选框，然后选择**操作**和**编辑**。

1. 使用 **Network Load Balancer listener (网络负载均衡器侦听器)** 对话框编辑设置，然后选择 **Save (保存)**。

**添加侦听器**

1. 选择**添加侦听器**。

1. 在 **Network Load Balancer listener (网络负载均衡器侦听器)** 对话框中，配置所需的设置，然后选择 **Add (添加)**。

使用 **Network Load Balancer listener (网络负载均衡器侦听器)** 对话框来配置侦听器侦听流量所在的端口，并选择您要将流量路由到的进程（通过进程侦听的端口指定）。

![\[Network Load Balancer 侦听器对话框\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listener-dialog.png)


### 进程
<a name="environments-cfg-nlb-console-processes"></a>

可以使用该列表为您的负载均衡器指定进程。进程是侦听器将流量路由到的目标。每个侦听器将指定端口上的传入客户端流量路由到您的实例上的进程。最初，该列表显示默认进程，它侦听端口 80 上的传入流量。

![\[Network Load Balancer 配置 – 进程列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-processes.png)


您可以编辑现有进程的设置或添加新的进程。要在列表中开始编辑或添加进程，请使用为[侦听器列表](environments-cfg-alb.md#environments-cfg-alb-console-listeners)列出的相同步骤。将打开**环境进程**对话框。

**Topics**
+ [定义](#environments-cfg-nlb-console-process-definition)
+ [健康检查](#environments-cfg-nlb-console-process-healthchecks)

#### 定义
<a name="environments-cfg-nlb-console-process-definition"></a>

可以使用以下设置定义进程：其 **Name (名称)** 以及它在其中侦听请求的 **Process port (进程端口)**。

![\[Network Load Balancer 进程对话框的名称、侦听器端口和进程端口设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-definition.png)


#### 健康检查
<a name="environments-cfg-nlb-console-process-healthchecks"></a>

可以使用以下设置配置进程运行状况检查：
+ **Interval (间隔)** – 单个实例的两次运行状况检查间隔的时间（秒）。
+ **Healthy threshold (正常阈值)** – 在 Elastic Load Balancing 更改实例的运行状况之前，实例必须通过或未通过的运行状况检查次数。（对于 Network Load Balancer，**Unhealthy threshold (不正常阈值)** 是始终等于正常阈值的只读设置。）
+ **Deregistration delay (取消注册延迟)** – 在取消注册实例之前等待活动请求完成的时间（秒）。

![\[Network Load Balancer 进程对话框的运行状况检查设置\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-healthcheck.png)


**注意**  
Elastic Load Balancing 运行状况检查不会影响环境的 Auto Scaling 组的运行状况检查行为。未通过 Elastic Load Balancing 运行状况检查的实例不会自动被 Amazon A EC2 uto Scaling 替换，除非您手动将 Amazon A EC2 uto Scaling 配置为这样做。有关详细信息，请参阅 [Elastic Beanstalk 环境的 Auto Scaling 运行状况检查设置](environmentconfig-autoscaling-healthchecktype.md)。

有关运行状况检查以及其对环境的总体运行状况的影响的更多信息，请参阅[基本运行状况报告](using-features.healthstatus.md)。

## 示例：带 end-to-end加密功能的环境的 Network Load Balancer
<a name="environments-cfg-nlb-console-example"></a>

在此示例中，您的应用程序需要 end-to-end流量加密。要配置您环境的 Network Load Balancer 以满足这些要求，您需要将默认进程配置为侦听端口 443、向端口 443 添加一个可将流量路由到默认进程的侦听器，并禁用默认侦听器。

**为该示例配置负载均衡器**

1. *配置默认进程。*选择默认进程，然后为**操作**选择**编辑**。对于 **Process port (进程端口)** 键入 `443`。  
![\[Network Load Balancer 配置示例 – 将默认进程配置为使用进程端口 443\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-process-443.png)

1. *添加端口 443 侦听器。*添加新侦听器。对于 **Listener port (侦听器端口)**，键入 `443`。对于 **Process port (进程端口)**，确保 `443` 已选中。  
![\[Network Load Balancer 配置示例 – 添加端口 443 侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listener-443.png)

   您现在可以查看列表上的其他侦听器。  
![\[Network Load Balancer 配置示例 – 具有两个侦听器的侦听器列表\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners.png)

1. *禁用默认端口 80 侦听器。*对于默认侦听器，关闭**已启用**选项。  
![\[Network Load Balancer 配置示例 – 禁用默认侦听器\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners-disabled.png)

## 使用 EB CLI 配置 Network Load Balancer
<a name="environments-cfg-nlb-ebcli"></a>

当您运行 [**eb create**](eb3-create.md) 时，EB CLI 会提示您选择负载均衡器类型。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1): 3
```

您也可以使用 `--elb-type` 选项指定负载均衡器类型。

```
$ eb create test-env --elb-type network
```

## Network Load Balancer 命名空间
<a name="environments-cfg-nlb-namespaces"></a>

您可以在以下命名空间中找到与 Network Load Balancer 相关的设置：
+ `aws:elasticbeanstalk:environment` – 选择用于环境的负载均衡器类型。Network Load Balancer 的值为 `network`。
+ `aws:elbv2:listener` – 在 Network Load Balancer 上配置侦听器。这些设置将映射到经典负载均衡器的 `aws:elb:listener` 中的设置。
+ `aws:elasticbeanstalk:environment:process` – 配置运行状况检查并为在您的环境的实例上运行的过程指定端口和协议。端口和协议设置将映射到经典负载均衡器上侦听器的 `aws:elb:listener` 中的实例端口和实例协议设置。运行状况检查设置将映射到 `aws:elb:healthcheck` 和 `aws:elasticbeanstalk:application` 命名空间中的设置。

**Example .ebextensions/ .config network-load-balancer**  
要开始使用 Network Load Balancer，请使用[配置文件](ebextensions.md)将负载均衡器类型设置为 `network`。  

```
option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: network
```

**注意**  
您只能在环境创建期间设置负载均衡器类型。

**Example .ebextensions/ .config nlb-default-process**  
以下配置文件将修改默认进程的运行状况检查设置。  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '10'
    HealthyThresholdCount: '5'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: TCP
```

**Example .ebextensions/ .config nlb-secure-listener**  
以下配置文件将为端口 443 上的安全流量添加一个侦听器和用于侦听端口 443 的匹配的目标过程。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
```
`DefaultProcess` 选项以此方式命名是因为 Application Load Balancer，它可能在同一端口上具有非默认侦听器，以用于侦听到特定路径的流量（如需详细信息，请参阅 [应用程序负载均衡器](environments-cfg-alb.md)）。对于 Network Load Balancer，该选项为该侦听器指定唯一的目标进程。  
在此示例中，我们将进程命名为 `https`，因为它侦听安全 (HTTPS) 流量。由于 Network Load Balancer 只能使用 TCP，因此该侦听器使用 TCP 协议将流量发送到指定端口上的进程。由于 HTTP 和 HTTPS 网络流量是在 TCP 上实施的，因此，可以这样做。

# 配置双堆栈 Elastic Beanstalk 负载均衡器
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

您可以使您的 Elastic Beanstalk 环境能够同时为配置了双堆栈的负载 IPv6 均 IPv4 衡器的协议提供服务。创建负载平衡环境时，基础架构默认为 IPv4。您可以选择使用双堆栈配置创建新环境，也可以选择将现有的 IPv4仅限环境更新为双堆栈环境。

要使环境的负载均衡器能够同时为 IPv4 网络流量提供服务 IPv6 ，请将[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空间中的`IpAddressType`选项设置为 *du* alstack。

**注意**  
Elastic Beanstalk 仅支持应用程序负载均衡器和网络负载均衡器的双堆栈协议。对于使用经典负载均衡器的环境或单实例环境，它不支持双堆栈。

## Amazon VPC 先决条件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

在 Elastic Beanstalk 环境中配置负载均衡器之前，必须先使用 Amazon VPC 完成一些配置步骤：

1. 将 IPv6 CIDR 块与您环境的 VPC 关联。

1. 将 IPv6 CIDR 块与 VPC 的所有子网关联。

1. （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。

您可以使用 Amazon VPC 控制台或 AWS CLI 命令完成这些先决条件配置。以下主题将指导您并引导您参阅《Amazon VPC 用户指南》**和AWS CLI 命令参考**以了解更多详细信息。

**注意**  
完成 VPC 配置后，请等待几分钟让更改传播，然后再为负载均衡器配置双堆栈。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后再次尝试配置双堆栈。

### 使用控制台完成 VPC 先决条件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

《Amazon VPC 用户指南》**中提供了完成这些先决任务的详细步骤。

1. 请参阅 Amazon VPC *用户指南中的步骤 1：将 IPv6 CIDR 块与您的 VPC* [和子网关联](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)。

   此步骤包含两个您必须完成的程序：
   + 将 IPv6 CIDR 块与您的 VPC 关联。
   + 将 IPv6 CIDR 块与您的 VPC 子网关联。

1. （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。要完成此配置，请参阅《Amazon VPC 用户指南》**中的[步骤 2：更新路由表](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)。

### 使用完成 VPC 先决条件 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

您可以使用 AWS CLI 来完成和验证必备配置。

1. 将 IPv6 CIDR 块与您环境的 VPC 关联。

   1. 使用[associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html)命令将 CIDR 块与您的 VPC 关联。

   1. 使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令验证您的 VPC 配置。

   

     
**Example 命令**  

   ```
   # Associate an Amazon-provided IPv6 CIDR block with your VPC
   aws ec2 associate-vpc-cidr-block \
       --vpc-id vpc-12345678 \
       --region us-east-1  \
       --amazon-provided-ipv6-cidr-block
   
   # Verify the IPv6 CIDR block association
   aws ec2 describe-vpcs \
       --vpc-ids vpc-12345678 \
       --region us-east-1  \
       --query 'Vpcs[0].Ipv6CidrBlockAssociationSet'
   ```

1. 将 IPv6 CIDR 块与 VPC 的所有子网关联。

   1. 使用[associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html)命令将 CIDR 块与您的子网关联。

   1. 使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令验证您的子网配置。

   

     
**Example 命令**  

   ```
   # List all subnets in your VPC
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}'
   
   # Associate IPv6 CIDR block with each subnet
   aws ec2 associate-subnet-cidr-block \
       --subnet-id subnet-12345678 \
       --region us-east-1  \
       --ipv6-cidr-block 2001:db8::/64
   
   # Verify IPv6 CIDR block association for all subnets
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'
   ```

1.  （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。

   1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令在 VPC 内的路由表中添加路由。

   1. 使用[describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html)命令验证您的路由表。

   

     
**Example 命令**  

   ```
   # Add IPv6 route to Internet Gateway for public subnets
   aws ec2 create-route \
       --route-table-id rtb-12345678 \
       --destination-ipv6-cidr-block ::/0 \
       --gateway-id igw-12345678  \
       --region us-east-1
   
   # Add IPv6 route to NAT Gateway for private subnets (if applicable)
   aws ec2 create-route \
       --route-table-id rtb-87654321 \
       --destination-ipv6-cidr-block ::/0 \
       --nat-gateway-id nat-12345678 \
       --region us-east-1
   
   # Verify routes
   aws ec2 describe-route-tables \
       --route-table-ids rtb-12345678 \
       --region us-east-1 \
       --query 'RouteTables[0].Routes'
   ```

## 为 Elastic Beanstalk 负载均衡器配置双堆栈
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

为您的环境设置 VPC 先决条件配置后，您可以使用双堆栈选项配置负载均衡器，使其可以同时为 IPv4 和 IPv6协议提供服务。您可以使用 Elastic Beanstalk 控制台 AWS CLI、中的配置`.ebextensions`文件 AWS 和软件开发工具包来配置负载均衡器以提供双堆栈流量。

### 使用控制台
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

您可以使用 Elastic Beanstalk 控制台为环境的负载均衡器配置双堆栈。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再执行以下步骤。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试配置步骤。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

**创建新环境：配置负载均衡器以支持双堆栈**

1. 启动 Elastic Beanstalk 控制台，并开始执行创建新环境的步骤。在**配置服务访问权限**页面中设置**服务角色**和 **EC2 实例配置文件**必填字段后，继续执行此过程中的步骤，为负载均衡器设置双堆栈配置。有关开始操作的更多信息，请参阅[创建 Elastic Beanstalk 环境](using-features.environments.md)。

1. 在**配置服务访问权限**中，选择**下一步**。

1. **设置联网、数据库和标签**页面随即显示。

   如果您完成了上一节中所述的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，那么您已经设置了所需的 VPC 和子网。在这种情况下，请跳过此步骤及其子步骤，继续选择 VPC。

   1. 若要配置 VPC 和子网，您可以选择**创建 VPC** 以转到 VPC 控制台。按照 [使用控制台完成 VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步骤操作。

   1.  等待几分钟让 VPC 更新传播，然后返回到 Elastic Beanstalk 控制台并选择刷新以继续下一步。

       如果在后续步骤中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后重试步骤。

1. 在**设置网络、数据库和标签页面上，**从 **VPC** 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。

   选择 VPC 后，**实例子网**将会填充 VPC 子网。

1. 选择一个或多个**实例子网**，然后选择**下一步**。

1. **配置实例流量和扩缩**页面随即显示。

   在**负载均衡器网络设置**中，为 **Dualstack (IPv4 & IPv6)** 选择**启用**。

1. 选择**负载均衡器类型**。**应用程序负载均衡器**和**网络负载均衡器**均支持*双堆栈*。

1. 您可以继续在当前控制台页面上配置其他负载均衡器选项。有关负载均衡器选项和配置的更多信息，请参阅本章中的其他主题。

1. 继续执行后续步骤，完成环境的配置和创建。有关更多信息，请参阅 [创建 Elastic Beanstalk 环境](using-features.environments.md)。



**现有环境：配置负载均衡器以支持双堆栈**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在**网络和数据库**配置类别中，选择**编辑**。

1. 如果您完成了上一节中所述的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，那么您已经设置了所需的 VPC 和子网。在这种情况下，请跳过此步骤及其子步骤，继续选择 VPC。

   1. 若要配置 VPC 和子网，您可以选择**创建 VPC** 以转到 VPC 控制台。按照 [使用控制台完成 VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步骤操作。

   1.  等待几分钟让 VPC 更新传播，然后返回到 Elastic Beanstalk 控制台并选择刷新以继续下一步。

       如果在后续步骤中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后重试步骤。

1. 在**网络和数据库**页面中，从 **VPC** 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。

   选择 VPC 后，**实例子网**将会填充 VPC 子网。

1. 选择一个或多个**实例子网**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

1. 在 **Instance traffic and scaling**（实例流量和扩展）配置类别中，选择 **Edit**（编辑）。

1. 在**负载均衡器网络设置**中，选择为**双栈**启用** (IPv4 & IPv6)**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

### 使用 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

您可以使用 AWS 命令行界面 (AWS CLI) 来配置环境的负载均衡器，以同时 IPv6 为 IPv4 网络流量提供服务。本节提供包含 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 和 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令的示例。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再运行这些命令将您的负载均衡器配置为双堆栈。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试命令。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

 

**Example ：具有双堆栈配置的 create-environment 命令（内联命名空间选项）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack
```



作为替代方法，请使用 `options.json` 文件来指定命名空间选项，而不是将其内联。以下示例命令演示了 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令。

**Example ：具有双堆栈配置的 update-environment 命令（`options.json` 文件中的命名空间选项）**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \ file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "dualstack"
  }
]
```



以下示例更新现有环境以将`IpAddressType`选项设置为*IPv4*。

**注意**  
如果您需要将环境配置从双堆栈回滚到，则此示例`update-environment`命令很有用。 IPv4

**Example 要设置的更新环境 IpAddressType IPv4**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4
```

### 使用 .ebextensions 配置文件
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

您可以使用 Elastic B [eanstalk](ebextensions.md) 配置文件使环境的负载均衡器能够同时为网络流量提供服务。 IPv6 IPv4 请将 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间中的 `IpAddressType` 选项设置为*双堆栈*。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让 VPC 更改传播，然后再应用 `.ebextensions` 配置。如果在此配置的设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

**Example ：用于负载均衡器双堆栈配置的 .ebextensions/options.config（[速记语法](ebextensions-optionsettings.md#ebextensions-optionsettings.title)）**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: dualstack
```

**Example ：用于负载均衡器双堆栈配置的 .ebextensions/options.config（[标准语法](ebextensions-optionsettings.md#ebextensions-optionsettings.title)）**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: dualstack
```

### 使用 AWS 软件开发工具包
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

您可以使用配置双堆栈。[AWS SDKs](https://docs.aws.amazon.com//code-library/)与上一节中提到的`update-environment`和`create-environment` AWS CLI 命令类似，您可以使用[CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html)和 [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html)API 操作。使用 `OptionSettings` 请求参数来指定 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间的选项。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再运行程序为双堆栈配置负载均衡器。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后再次尝试运行双堆栈配置程序。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

## 问题排查
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**尝试使用 Amazon Q 开发者版 CLI 进行人工智能辅助故障排除**  
 Amazon Q 开发者版 CLI 可以帮助您针对环境问题快速进行故障排除。Q CLI 可通过检查环境状态、审核事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练，请参阅博客中的使用 [Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。 AWS 

本节提供有关对负载均衡器双堆栈配置问题进行故障排除的指导。

**事件：***VPC *vpc\$1id* 未配置 IPv6 CIDR 块。 IPv6双栈负载均衡器需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与您的 VPC 关联。*

您的 VPC 和所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **事件：***VPC 的一个或多个子网*vpc\$1id*未配置 IPv6 CIDR 块。 IPv6 双栈负载均衡器使用的子网需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与所有必需的子网关联。*

您的 VPC 的所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **错误：***The `IpAddressType` option can only be applied on Elastic Beanstalk environments configured with an Application Load Balancer or Network Load Balancer.*

此消息表明 Elastic Beanstalk 环境可能是单实例环境，或者该环境可能正在使用经典负载均衡器。只有配置了应用程序负载均衡器或网络负载均衡器的环境才能配置 `IpAddressType`。

# 配置访问日志
<a name="environments-cfg-loadbalancer-accesslogs"></a>

您可以使用[配置文件](ebextensions.md)将环境的负载均衡器配置为将访问日志上传到 Amazon S3 存储桶。有关说明，请参阅以下示例配置文件： GitHub 
+ `[loadbalancer-accesslogs-existingbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config)` – 将负载均衡器配置为将访问日志上传到现有 Amazon S3 存储桶。
+ `[loadbalancer-accesslogs-newbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config)` – 将负载均衡器配置为将访问日志上传到新的存储桶。