

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

# 网络负载均衡器
<a name="network-load-balancers"></a>

网络负载均衡器充当客户端的单一接触点。客户端将请求发送到网络负载均衡器，然后网络负载均衡器将请求发送到一个或多个可用区中的目标（例如 EC2 实例）。

要配置您的网络负载均衡器，可以创建[目标组](load-balancer-target-groups.md)，然后将目标注册到目标组。如果您确保每个启用的可用区均具有至少一个注册目标，则网络负载均衡器将具有最高效率。您还可以创建[侦听器](load-balancer-listeners.md)来检查来自客户端的连接请求，并将来自客户端的请求路由到目标组中的目标。

网络负载均衡器支持客户端通过 VPC 对等互连、 Amazon 托管 VPN 和第三方 VPN 解决方案进行连接。 Amazon Direct Connect

**Topics**
+ [负载均衡器状态](#load-balancer-state)
+ [IP 地址类型](#ip-address-type)
+ [连接空闲超时](#connection-idle-timeout)
+ [负载均衡器属性](#load-balancer-attributes)
+ [Cross-zone 负载平衡](#cross-zone-load-balancing)
+ [DNS 名称](#dns-name)
+ [负载均衡器可用区运行状况](#load-balancer-zonal-health)
+ [创建负载均衡器](create-network-load-balancer.md)
+ [更新可用区](availability-zones.md)
+ [更新 IP 地址类型](load-balancer-ip-address-type.md)
+ [编辑负载均衡器属性](edit-load-balancer-attributes.md)
+ [更新安全组](load-balancer-security-groups.md)
+ [标记负载均衡器](load-balancer-tags.md)
+ [删除负载均衡器](load-balancer-delete.md)
+ [查看资源地图](view-resource-map.md)
+ [CloudWatch 日志](load-balancer-cloudwatch-logs.md)
+ [可用区转移](zonal-shift.md)
+ [LCU 预留](capacity-unit-reservation.md)

## 负载均衡器状态
<a name="load-balancer-state"></a>

网络负载均衡器可能处于下列状态之一：

`provisioning`  
正在设置网络负载均衡器。

`active`  
网络负载均衡器已完全设置并准备好路由流量。

`failed`  
无法设置网络负载均衡器。

## IP 地址类型
<a name="ip-address-type"></a>

您可以设置客户端可与您的网络负载均衡器结合使用的 IP 地址类型。

网络负载均衡器支持以下 IP 地址类型：

**`ipv4`**  
客户端必须使用 IPv4 地址（例如 192.0.2.1）进行连接。

**`dualstack`**  
客户端可以同时使用 IPv4 地址（例如 192.0.2.1）和 IPv6 地址（例如，2001:0db8:85a3:0:0:8a2e:0370:7334）连接到网络负载均衡器。

**注意事项**
+ 网络负载均衡器根据目标组的 IP 地址类型与目标进行通信。
+ 要支持 UDP IPv6 侦听器的源 IP 保留，请确保**为 IPv6 源 NAT 启用前缀**已打开。
+ 当您为网络负载均衡器启用双堆栈模式时，弹性负载均衡为网络负载均衡器提供 AAAA DNS 记录。使用 IPv4 地址与网络负载均衡器通信的客户端解析 A DNS 记录。使用 IPv6 地址与网络负载均衡器通信的客户端解析 AAAA DNS 记录。
+ 阻止通过互联网网关对内部双堆栈网络负载均衡器的访问，以防意外访问互联网。但是，这并不能阻止其他互联网访问（例如，通过对等互连、Transit Gateway 或 Amazon VPN）。 Amazon Direct Connect

有关更多信息，请参阅 [更新网络负载均衡器的 IP 地址类型](load-balancer-ip-address-type.md)。

## 连接空闲超时
<a name="connection-idle-timeout"></a>

对于客户端通过网络负载均衡器发出的每个 TCP 请求，都将跟踪该连接的状态。如果客户端或目标在空闲超时期限内没有通过连接发送任何数据，则不再跟踪该连接。如果客户端或目标在空闲超时期限后发送数据，则客户端会收到一个 TCP RST 数据包，以指示连接不再有效。

TCP 流的默认空闲超时值为 350 秒，但可以更新为 60-6000 秒之间的任何值。客户端或目标可以使用 TCP keepalive 数据包重启空闲超时。为维护 TLS 连接而发送的 Keepalive 数据包不能包含数据或负载。

**ENI 连接跟踪超时不匹配**  
如果您将 TCP 空闲超时值配置为大于 350 秒，请确保将目标实例的 ENI 连接跟踪空闲超时 (`TcpEstablishedTimeout`) 设置为等于或大于 Network Load Balancer 空闲超时的值。在第六代 Nitro 实例（Nitro V6\+）上，默认 ENI 连接跟踪超时为 350 秒。如果 Network Load Balancer 空闲超时超过目标的连接跟踪超时，则目标的网络接口可能会丢弃连接跟踪条目，而负载均衡器仍认为连接处于活动状态，从而导致连接上的数据包丢失。您可以使用配置目标的连接跟踪超时`ModifyNetworkInterfaceAttribute`。有关更多信息，请参阅 [EC2 上的 TCP 连接管理最佳实践](https://www.amazonaws.cn/blogs/networking-and-content-delivery/best-practices-for-tcp-connection-management-on-ec2/)。

TLS 侦听器的连接空闲超时为 350 秒，且无法修改。当 TLS 侦听器收到来自客户端或目标的 TCP keepalive 数据包时，负载均衡器会生成 TCP keepalive 数据包，并每 20 秒将它们发送到前端和后端连接。您不能修改此行为。

虽然 UDP 无连接，但是负载均衡器将根据源和目标 IP 地址和端口保持 UDP 流状态。这可确保属于同一个流中的数据包始终发送到相同的目标。空闲超时期限后，负载均衡器会考虑将传入的 UDP 数据包作为新流，并路由到新的目标。Elastic Load Balancing 将 UDP 流的空闲超时值设置为 120 秒。无法对其进行更改。

EC2 实例必须在 30 秒内响应新请求，才能建立退回路径。

有关更多信息，请参阅 [更新空闲超时](update-idle-timeout.md)。

## 负载均衡器属性
<a name="load-balancer-attributes"></a>

您可以通过编辑网络负载均衡器的属性来对其进行配置。有关更多信息，请参阅 [编辑负载均衡器属性](edit-load-balancer-attributes.md)。

网络负载均衡器的负载均衡器属性如下：

`access_logs.s3.enabled`  
指示是否启用存储在 Amazon S3 中的访问日志。默认值为 `false`。

`access_logs.s3.bucket`  
访问日志所用的 Amazon S3 存储桶的名称。如果启用访问日志，则此属性是必需的。有关更多信息，请参阅 [存储桶要求](enable-access-logs.md#access-logging-bucket-requirements)。

`access_logs.s3.prefix`  
Amazon S3 存储桶中位置的前缀。

`deletion_protection.enabled`  
指示是否启用[删除保护](edit-load-balancer-attributes.md#deletion-protection)。默认为 `false`。

`ipv6.deny_all_igw_traffic`  
阻止互联网网关（IGW）访问网络负载均衡器，以防通过互联网网关意外访问内部网络负载均衡器。对于面向互联网的网络负载均衡器，它设置为 `false`；对于内部网络负载均衡器，它设置为 `true`。此属性不会阻止非 IGW 互联网访问（例如，通过对等互连、Transit Gateway 或 Amazon Direct Connect）。 Amazon VPN

`load_balancing.cross_zone.enabled`  
指示是否启用了[跨可用区负载均衡](#cross-zone-load-balancing)。默认值为 `false`。

`dns_record.client_routing_policy`  
指示将如何在网络负载均衡器可用区之间进行分配流量。可能的值为 `availability_zone_affinity`（100% 可用区亲和性）、`partial_availability_zone_affinity`（85% 可用区亲和性）和 `any_availability_zone`（0% 可用区亲和性）。

`secondary_ips.auto_assigned.per_subnet`  
需要配置的[辅助 IP 地址](edit-load-balancer-attributes.md#secondary-ip-addresses)数量。当无法添加目标时，可用于解决端口分配错误。有效范围为 0 到 7。默认值是 0。此值设定后无法降低。

`zonal_shift.config.enabled`  
指示是否已启用[可用区转移](zonal-shift.md)。默认值为 `false`。

## Cross-zone 负载平衡
<a name="cross-zone-load-balancing"></a>

默认情况下，每个网络负载均衡器节点仅在其可用区中的已注册目标之间分配流量。如果您开启了跨区域负载均衡，则每个网络负载均衡器节点会在所有启用的可用区中的注册目标之间分配流量。您也可以开启目标组级别的跨区域负载均衡。有关更多信息，请参阅《*Elastic [Cross-zone L](https://docs.amazonaws.cn/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#cross-zone-load-balancing) oad Balancing 用户指南》中的[Cross-zone 目标群体的负载平衡](edit-target-group-attributes.md#target-group-cross-zone)和负载平衡*。

## DNS 名称
<a name="dns-name"></a>

每个 Network Load Balancer 都会收到一个默认的域名系统 (DNS) 名称，其语法如下：{{name}}-{{id}} .elb。 {{region}}.amazonaws.com。例如，my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com。

如果您更喜欢使用更容易记住的 DNS 名称，则可以创建自定义域名并将其与网络负载均衡器的 DNS 名称相关联。在客户端使用此自定义域名进行请求时，DNS 服务器将它解析为网络负载均衡器的 DNS 名称。

首先，向经认可的域名注册商注册域名。下一步，通过您的 DNS 服务（如您的域注册商）创建一条 DNS 记录将请求路由到您的网络负载均衡器。有关更多信息，请参阅您的 DNS 服务的文档。例如，如果您将 Amazon Route 53 用作 DNS 服务，请创建一条指向网络负载均衡器的别名记录。有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[将流量路由到 ELB 负载均衡器](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/routing-to-elb-load-balancer.html)。

网络负载均衡器针对每个启用的可用区都有一个 IP 地址。这些是网络负载均衡器节点的 IP 地址。网络负载均衡器的 DNS 名称解析为这些地址。例如，假设您的网络负载均衡器的自定义域名是 `example.networkloadbalancer.com`。使用以下 **dig** 或 **nslookup** 命令确定网络负载均衡器节点的 IP 地址。

**Linux 或 Mac**

```
$ dig +short {{example.networkloadbalancer.com}}
```

**Windows**

```
C:\> nslookup {{example.networkloadbalancer.com}}
```

网络负载均衡器具有其节点的 DNS 记录。您可以使用具有以下语法的 DNS 名称来确定 Network Load Balancer 节点的 IP 地址：{{az}}。 {{name}}-{{id}} .elb。 {{region}}.amazonaws.com。

**Linux 或 Mac**

```
$ dig +short {{us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com}}
```

**Windows**

```
C:\> nslookup {{us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com}}
```

## 负载均衡器可用区运行状况
<a name="load-balancer-zonal-health"></a>

对于每个已启用的可用区，网络负载均衡器在 Route 53 中都具有可用区 DNS 记录和 IP 地址。当网络负载均衡器未能通过特定可用区的可用区运行状况检查时，将从 Route 53 中移除其 DNS 记录。使用 Amazon CloudWatch 指标监控负载均衡器区域运行状况`ZonalHealthStatus`，让您可以更深入地了解导致故障转移的事件，从而实施预防措施来确保最佳的应用程序可用性。有关更多信息，请参阅[网络负载均衡器指标](load-balancer-cloudwatch-metrics.md#load-balancer-metrics-nlb)。

网络负载均衡器可能由于多种原因无法通过可用区运行状况检查，从而导致其变得运行状况不佳。请参阅下文，了解未通过可用区运行状况检查导致网络负载均衡器运行状况不佳的常见原因。

**请检查以下可能原因：**
+ 负载均衡器没有运行状况正常目标
+ 运行状况正常目标数量少于配置的最小值
+ 正在进行可用区转移或可用区自动移位
+ 由于检测到问题，流量正在自动转移到运行状况良好区域