

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

# 配置 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 上实施的，因此，可以这样做。