的目标组Network Load Balancer - Elastic Load Balancing
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

的目标组Network Load Balancer

每个 目标组 用于将请求路由至一个或多个已注册目标。创建侦听器时,您为其默认操作指定目标组。流量将转发到在侦听器规则中指定的目标组。您可以为不同类型的请求创建不同的目标组。例如,为一般请求创建一个目标组,为应用程序的微服务请求创建其他目标组。有关更多信息,请参阅 网络负载均衡器 components.

您基于每个目标组定义负载均衡器的运行状况检查设置。每个目标组均使用默认运行状况检查设置,除非您在创建目标组时将其覆盖或稍后对其进行修改。在侦听器规则中指定一个目标组后,负载均衡器将持续监控已注册到该目标组的所有目标 (这些目标位于已为负载均衡器启用的可用区中) 的运行状况。负载均衡器将请求路由到正常运行的已注册目标。有关更多信息,请参阅 目标组的运行状况检查.

路由配置

默认情况下,负载均衡器会使用您在创建目标组时指定的协议和端口号将请求路由到其目标。此外,您可以覆盖在将目标注册到目标组时用于将流量路由到目标的端口。

目标组 Network Load Balancer 支持以下协议和端口:

  • 协议: TCP、TLS、UDP、TCP_UDP

  • 端口: 1-65535

如果目标组使用 TLS 协议配置,则负载均衡器将使用您在目标上安装的证书与目标建立 TLS 连接。负载均衡器不验证这些证书。因此,您可以使用自签名证书或已过期的证书。由于负载均衡器位于虚拟私有云 (VPC) 中,因此负载均衡器与目标之间的流量将在数据包级别进行身份验证,这样即使目标上的证书无效,它也不会面临中间人攻击或欺骗风险。

下表总结了侦听器协议和目标组设置的组合。

侦听器协议 目标组协议 目标组类型 运行状况检查协议

TCP

TCP | TCP_UDP

实例 | ip

HTTP | HTTPS | TCP

TLS

TCP | TLS

实例 | ip

HTTP | HTTPS | TCP

UDP

UDP | TCP_UDP

实例 | ip

HTTP | HTTPS | TCP

TCP_UDP

TCP_UDP

实例 | ip

HTTP | HTTPS | TCP

Target type

在创建目标组时,应指定其目标类型,这决定您如何指定其目标。创建目标组后,将无法更改其目标类型。

以下是可能的目标类型:

instance

这些目标通过实例 ID 指定。

ip

这些目标通过 IP 地址指定。

当目标类型为 ip 时,您可以指定来自以下 CIDR 块之一的 IP 地址:

  • 目标组的 VPC 的子网

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

重要

不能指定可公开路由的 IP 地址。

这些支持的CIDR块使您能够与目标组注册以下内容: ClassicLink实例、IP地址和端口可寻址的AWS资源(例如,数据库)以及与AWS相关联的本地资源 AWS Direct Connect 或软件VPN连接。

当目标类型为 ip 时,负载均衡器可支持针对每个唯一目标(IP 地址和端口)的 55000 个并发连接或每分钟约 55000 个连接。如果连接数超过该值,则会增大出现端口分配错误的几率。如果您收到端口分配错误,请将多个目标添加到目标组。

Network Load Balancer 不支持 lambda 目标类型,仅限 Application Load Balancer 支持 lambda 目标类型。有关详细信息,请参阅 Lambda功能作为目标Application Load Balancer 用户指南.

请求路由和 IP 地址

如果使用实例 ID 指定目标,则使用实例的主网络接口中指定的主私有 IP 地址将流量路由到实例。负载均衡器在将数据包转发到目标实例之前重写目的地 IP 地址。

如果使用 IP 地址指定目标,则可以使用来自一个或多个网络接口的任何私有 IP 地址将流量路由到实例。这使一个实例上的多个应用程序可以使用同一端口。请注意,每个网络接口都可以有自己的安全组。负载均衡器在将数据包转发到目标之前重写目的地 IP 地址。

有关允许实例的流量的更多信息,请参阅目标安全组.

源 IP 保留

如果您按实例ID指定目标,将保留客户端的源IP地址,并将其提供给应用程序。

如果您按IP地址指定目标,源IP地址取决于目标组的协议,如下所示:

  • TCP和TLS: 源IP地址是负载均衡器节点的专用IP地址。如果您需要客户端的IP地址,请启用 代理协议 并从代理协议标题获取客户端IP地址。

  • UDP和TCP_UDP: 源IP地址是客户端的IP地址。

如果在向 网络负载均衡器 注册的实例中存在微服务,则不能使用负载均衡器在这些服务之间提供通信,除非该负载均衡器是面向互联网的,或者实例是通过 IP 地址注册的。有关更多信息,请参阅 Connections time out for requests from a target to its load balancer.

已注册目标

您的负载均衡器充当客户端的单一接触点,并跨其正常运行的已注册目标分发传入流量。每个目标组在为负载均衡器启用的每个可用区中必须至少有一个已注册目标。您可以将每个目标注册到一个或多个目标组中。您可以使用不同的端口多次向同一目标组注册每个 EC2 实例或 IP 地址,从而使负载均衡器能够将请求路由到微服务。

如果应用程序需求增加,您可以向一个或多个目标组注册其他目标以便满足该需求。一旦注册过程完成,负载均衡器就会开始将流量路由到新注册的目标。

如果应用程序需求减少或者您需要为目标提供服务,您可以从目标组取消注册目标。取消注册目标将从目标组中删除目标,但不会影响目标。一旦取消注册,负载均衡器就会停止将流量路由到目标。目标将进入 draining 状态,直至进行中请求完成。当您准备好恢复接收流量时,可以再次向目标组注册目标。

如果要通过实例 ID 来注册目标,则可以将负载均衡器与 Auto Scaling 组一同使用。在您将目标组附加到 Auto Scaling 组, Auto Scaling 在启动目标组时,将目标注册为目标组。有关详细信息,请参阅 将负载平衡器附加到您的 Auto Scaling 组Amazon EC2 Auto Scaling 用户指南.

Requirements

  • 如果使用以下实例类型之一,则无法按实例ID注册实例: C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3或T1。

  • 如果VPC处于负载均衡器VPC(相同区域或不同区域)的虚拟机中,则无法按实例ID注册实例。可以用 IP 地址注册这些实例。

  • 如果您按 IP 地址注册目标,并且该 IP 地址与负载均衡器位于同一 VPC 中,则负载均衡器会验证其是否来自可以访问的子网。

  • 对于UDP和TCP_UDP目标组,如果IP地址位于负载均衡器VPC以外或如果使用以下实例类型之一,请勿通过IP地址寄存实例: C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3或T1。驻留在负载均衡器VPC以外的目标或使用不支持的实例类型可能能够接收负载均衡器的流量,但无法响应。

目标组属性

以下是目标组属性:

deregistration_delay.timeout_seconds

的时间 Elastic Load Balancing 要在更改已从 drainingunused...范围为0-3600秒。默认值为 300 秒。

proxy_protocol_v2.enabled

指示是否已启用代理协议版本 2。默认情况下,禁用代理协议。

stickiness.enabled

指示是否启用粘性会话。

stickiness.type

粘性的类型。可能的值为 source_ip.

取消注册延迟

取消注册实例时,负载均衡器将停止创建与实例的新连接。负载均衡器会使用连接耗尽来确保进行中的流量在现有连接上完成。如果已经取消注册的实例运行状况良好并且现有连接未处于空闲状态,负载均衡器可以继续将流量发送到该实例。为保证现有连接关闭,您可以在取消注册实例之前确保该实例运行状况不佳,或者您可以定期关闭客户端连接。

删除目标的初始状态为 draining...默认情况下,负载均衡器将已删除目标状态更改为 unused 300秒后。如需更改负载均衡器在将取消注册的目标的状态更改为 unused 之前等待的时长,请更新取消注册延迟值。我们建议您指定至少 120 秒的值以确保完成请求。

New console

如何使用新控制台更新DeregistrationDelay值

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组的名称打开其详细信息页面。

  4. 组详情 页面, 属性 部分,选择 编辑.

  5. 编辑属性 页面,更改 Deregistrationdelay(DeregistrationDelay) 根据需要。

  6. 选择 保存更改.

Old console

如何使用旧控制台更新DeregistrationDelay值

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组。

  4. 选择 描述编辑属性.

  5. 更改 Deregistrationdelay(DeregistrationDelay) 根据需要,然后选择 保存.

使用 更新取消注册延迟值AWS CLI

使用 修改-目标组属性 命令。

代理协议

Network Load Balancer 使用代理协议版本 2 来发送其他连接信息,如源和目的地。代理协议版本 2 提供代理协议标头的二进制编码。负载均衡器将代理协议标头预添加到 TCP 数据中。它不会丢弃或覆盖任何现有数据,包括客户端或任何其他代理、负载均衡器或网络路径中的服务器所发送的任何代理协议标头。因此,可以接收多个代理协议标头。另外,如果您的目标以外的其他网络路径还有其他网络路径, 网络负载均衡器,第一代理协议标题可能不是 网络负载均衡器.

如果您按照IP地址指定目标,则提供给应用程序的源IP地址取决于目标组的协议,如下所示:

  • TCP和TLS: 源IP地址是负载均衡器节点的专用IP地址。如果您需要客户端的 IP 地址,请启用代理协议并从代理协议标头获取客户端 IP 地址。

  • UDP和TCP_UDP: 源IP地址是客户端的IP地址。

如果您通过实例 ID 指定目标,则提供给应用程序的源 IP 地址将是客户端 IP 地址。但是,如果您喜欢,可以启用代理协议并从代理协议标题获取客户端IP地址。

运行状况检查连接

启用代理协议后,代理协议标头也会包含在来自负载均衡器的运行状况检查连接中。但是,使用运行状况检查连接,客户端连接信息不会在代理协议标头中发送。

VPC 终端节点服务 ()

对于从服务消费者到客户的流量 VPC端点服务,向应用程序提供的源IP地址是负载均衡器节点的专用IP地址。如果您的应用程序需要服务使用器的 IP 地址,请启用代理协议并从代理协议标头获取这些 IP 地址。

代理协议标头还包括终端节点的 ID。此信息使用自定义类型-长度-值 (TLV) 向量进行编码,如下所示。

字段 长度 (8 位字节) Description

Type

1

PP2_TYPE_AWS (0xEA)

Length

2

值的长度

Value

1

PP2_SUBTYPE_AWS_VPCE_ID (0x01)

可变 (值长度减 1) 终端节点的 ID

如需解析TLV型号0xEA的示例,请参阅 https://github.com/aws/elastic-load-balancing-tools/tree/master/proprot.

启用代理协议

在目标组上启用代理协议之前,请确保您的应用程序预料到并且可以解析代理协议版本 2 标头,否则它们可能会失败。有关详细信息,请参阅 代理协议版本1和2.

New console

使用新控制台启用代理协议v2

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组的名称,打开其详细信息页面。

  4. 组详情 页面, 属性 部分,选择 编辑.

  5. 编辑属性 页面,选择 代理协议v2.

  6. 选择 保存更改.

Old console

使用旧控制台启用代理协议v2

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组。

  4. 选择 描述编辑属性.

  5. 对于 代理协议v2,选择 启用.

  6. 选择 保存.

使用 启用代理协议版本 2AWS CLI

使用 修改-目标组属性 命令。

粘性会话

粘性会话是用于将客户端流量传输到目标组中的同一目标的机制。对于维护状态信息以便向客户端提供持续体验的服务器来说,这很有用。

Considerations

  • 使用粘性会话可能会导致连接和流分布不均,这可能会影响目标的可用性。例如,相同 NAT 设备背后的所有客户端都具有相同的源 IP 地址。这会使系统将来自这些客户端的所有流量传输到同一目标。

  • 如果目标组中的任何目标的运行状况发生变化,或者您向目标组注册或取消注册了目标,则负载均衡器可能会重置该目标组的粘性会话。

  • TLS 侦听器和 TLS 目标组不支持粘性会话。

New console

如何使用新控制台启用粘滞会话

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组的名称打开其详细信息页面。

  4. 组详情 页面, 属性 部分,选择 编辑.

  5. 编辑属性 页面,选择 粘性.

  6. 选择 保存更改.

Old console

如何使用旧控制台启用粘滞会话

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中, 负载平衡,选择 目标组.

  3. 选择目标组。

  4. 选择 描述编辑属性.

  5. 对于 粘性,选择 启用.

  6. 选择 保存.

使用 启用粘性会话AWS CLI

使用 修改-目标组属性 使用 stickiness.enabled 属性。