View a markdown version of this page

网络负载均衡器的侦听器 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

网络负载均衡器的侦听器

侦听器是一个使用您配置的协议和端口检查连接请求的进程。您必须至少添加一个侦听器,然后才能开始使用网络负载均衡器。如果您的负载均衡器没有侦听器,则无法接收来自客户端的流量。您为侦听器定义的规则决定了负载均衡器会如何将请求路由到您注册的目标(例如 EC2 实例)。

侦听器配置

侦听器支持以下协议和端口:

  • 协议:TCP、TLS、UDP、TCP_UDP、QUIC、TCP_QUIC

  • 端口:1-65535

可以使用 TLS 侦听器将加密和解密的工作交给负载均衡器完成,以便应用程序可以专注于其业务逻辑。如果侦听器协议为 TLS,您必须在侦听器上部署至少一个 SSL 服务器证书。有关更多信息,请参阅 服务器证书

如果必须确保目标解密 TLS 流量而不是负载均衡器,则可以在端口 443 上创建 TCP 侦听器,而不是创建 TLS 侦听器。通过 TCP 侦听器,负载均衡器将加密流量传递到目标,而不会对其进行解密。

您可以使用 QUIC 侦听器来接受 QUIC 流量。网络负载均衡器作为符合 RFC9000 标准的直通式负载均衡器运行。利用 QUIC 侦听器和支持 QUIC 的后端,为移动设备实现无缝连接迁移。

要在同一端口上同时支持 TCP 和 UDP,请创建一个 TCP_UDP 侦听器。TCP_UDP 侦听器的目标组必须使用 TCP_UDP 协议。

要在同一端口上同时支持 TCP 和 QUIC,请创建一个 TCP_QUIC 侦听器。TCP_QUIC 侦听器的目标组必须使用 TCP_QUIC 协议。

双栈负载均衡器的 UDP 侦听器需要有 IPv6 目标组。

WebSockets 仅支持 TCP、TLS、TCP_UDP 和 TCP_QUIC 侦听器。

QUIC 流量不支持版本协商。QUIC v1 是唯一受支持的 QUIC 版本。

发送到已配置侦听器的所有网络流量都归类为预期流量。与配置的侦听器不匹配的网络流量被归类为非预期流量。除类型 3 以外的 ICMP 请求也被视为意外流量。网络负载均衡器会丢弃意外流量,而不会将其转发到任何目标。如果发送到已配置侦听器的侦听器端口的 TCP 数据包不是新的连接,或者不是有效 TCP 连接的一部分,则将通过 TCP 重置 (RST) 拒绝。

有关更多信息,请参阅 Elastic Load Balancing 用户指南中的请求路由

默认操作

创建侦听器时,您需要指定路由请求的默认操作。默认操作将请求转发到您指定的目标组。

向多个目标组分配流量

如果您为默认操作指定多个目标组,那么请求将根据这些目标组的相对权重进行分配。您必须为每个目标组指定 0 至 999 之间的权重值。权重为 0 的目标组不会收到任何流量。在您添加目标组或更新目标组权重后,新连接将根据新的目标组权重进行路由。现有连接不受影响,将继续按常规方式运行直至关闭。

例如,如果指定两个目标组,每个目标组的权重为 10,则每个目标组将接收一半的请求。如果指定两个目标组,一个权重为 10,另一个权重为 20,则权重为 20 的目标组接收的请求数量是权重为 10 的目标组的两倍。

常见用例是从一个目标组向另一个目标组迁移流量。这意味着您需逐步增加新目标组的权重,同时降低原始目标组的权重,直至其变为 0。如果您将目标组的权重更新为 0,经过短暂时间后,该组将不再接收新的连接,且现有连接也将关闭。

粘性会话和加权目标组

在监听器上执行的转发操作可指定是否启用目标组粘性。启用后,目标组粘性会使来自相同源 IP 地址的后续连接优先选择先前选定的目标组。

注意事项
  • 对于 TLS 侦听器,您无法将 TCP 目标组和 TLS 目标组同时添加到侦听器规则中。所有目标组必须使用相同的协议。

  • 对于 TLS 侦听器,不支持目标组粘性。

  • 对于双栈负载均衡器,您无法将 IPv4 目标组和 IPv6 目标组同时添加到同一个默认操作中。默认操作中的所有目标组必须使用相同的 IP 地址类型。

  • 对于侦听器,如果转发操作包含多个目标组且其中任何一个启用了粘性策略,则该转发操作也必须启用目标组粘性策略。

侦听器属性

网络负载均衡器的侦听器属性如下:

tcp.idle_timeout.seconds

tcp 空闲超时值(以秒为单位)。有效范围为 60-6000 秒。默认值为 350 秒。

有关更多信息,请参阅 更新空闲超时

侦听器规则

您的网络负载均衡器的监听器规则决定其如何将请求路由到目标。每个侦听器都有一个将请求转发到指定目标组的默认操作。您可以添加自定义规则,根据传入流量的源 IP 地址类型评估条件并将流量路由到不同的目标组。这使您能够使用单个双栈负载均衡器将 IPv4 和 IPv6 流量路由到不同的目标组,从而无需进行 IPv4/IPv6 协议转换并保持端到端的源 IP 连接。

规则基础知识
  • 每条规则都包含以下组成部分:优先级、操作和条件。

  • 创建监听器时,您可以为默认规则定义操作。默认规则不能有条件。如果不满足任何其他规则的条件,则执行默认规则的操作。

  • 规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。不能更改默认规则的优先级。

  • 每条规则必须仅包含一个forward操作,该操作将请求路由到一个或多个目标组。

  • 监听器规则仅在双栈网络负载均衡器上可用。

规则条件

每个规则条件都有类型和配置信息。当规则的条件得到满足时,将执行该规则的操作。

以下是网络负载均衡器监听器规则支持的条件类型:

source-ip

根据源流量的 IP 地址类型进行路由。您可以将IpAddressType值指定为ipv4ipv6。当传入请求的源 IP 版本与条件匹配时,将执行规则操作。

以下是源 IP 条件的示例:

{ "Field": "source-ip", "SourceIpConfig": { "IpAddressType": "ipv4" } }
注意

网络负载均衡器的source-ip条件用于按 IP 版本(IPv4 或 IPv6)匹配流量。IpAddressType这与应用程序负载均衡器source-ip条件不同,后者使用 CIDR 范围来匹配特定的源 IP 地址。

规则操作

每个规则操作都有一个类型和配置信息。以下是网络负载均衡器侦听器规则支持的操作类型:

forward

将请求转发到一个或多个指定的目标组。如果为某个 forward 操作指定多个目标组,您必须为每个目标组指定权重。每个目标组权重都是一个介于 0 到 999 之间的值。对于将侦听器规则与加权目标组匹配的请求,会根据这些目标组的权重分配给这些目标组。例如,如果指定两个目标组,每个目标组的权重为 10,则每个目标组将接收一半的请求。如果指定两个目标组,一个权重为 10,另一个权重为 20,则权重为 20 的目标组接收的请求将是另一个目标组的两倍。

以下是路由到单个目标组的转发操作示例:

{ "Type": "forward", "TargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-ipv4-tg/target-group-id" }

以下是路由到两个加权目标组的前向操作示例:

{ "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-tg-1/target-group-id", "Weight": 70 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/my-tg-2/target-group-id", "Weight": 30 } ] } }

规则优先级

每个规则都有一个优先级。规则是按优先级顺序 (从最低值到最高值) 计算的。最后评估默认规则。您可以随时使用 s et-ru le-priorities 命令更改非默认规则的优先级。

每条规则必须具有唯一的优先级值。您不能创建具有相同优先级的多个规则。如果多个规则与传入流量相匹配,则优先级最高(最低数值)的规则优先。

规则评估

当流量到达网络负载均衡器侦听器时,将按以下顺序评估规则:

  1. Non-default 规则按优先顺序进行评估(最小值优先)。

  2. 当规则的条件得到满足时,将执行该规则的操作。

  3. 如果不满足任何规则条件,则执行默认操作。

如果监听器规则涵盖所有流量场景(IPv4 和 IPv6),则永远不能使用默认操作。但是,始终需要执行默认操作。

注意事项

先决条件

监听器规则需要双栈网络负载均衡器。VPC 和子网必须关联有 IPv6 CIDR 块,子网路由表必须路由 IPv6 流量。

规则评估和默认操作

规则按优先级顺序进行评估,其中首先评估较低的优先级数字。不匹配任何规则的流量将转为默认操作。将默认操作设置为要作为备用的 IP 地址系列。

协议和目标群体

监听器规则适用于 TCP、UDP、TCP_UDP 和 TLS 侦听器。双栈网络负载均衡器上的 UDP 侦听器需要 IPv6 目标组,因此在拆分 UDP 流量之前,请确保 IPv6 目标组存在。

运行状况检查

每个目标组根据自己的 IP 地址系列检查其目标的运行状况。确认目标安全组允许通过 IPv4 和 IPv6 来自负载均衡器的运行状况检查流量。

性能和可用性

合并的双栈网络负载均衡器承载 IPv4 和 IPv6 地址系列的总流量,与两个独立的网络负载均衡器相比,负载可能会增加一倍。虽然一个网络负载均衡器可以简化,但两个独立的网络负载均衡器可以为每个地址系列提供自然故障隔离。在整合之前,评估您的规模和可用性要求。

与现有网络负载均衡器功能的兼容性

监听器规则与现有的网络负载均衡器功能集一起使用:连接耗尽(注销延迟)、目标组粘性(粘性会话)、跨区域负载平衡、客户端 IP 保留(preserve_client_ip)以及 TLS 侦听器上的 TLS 终止。每个目标组都维护自己的配置。

源 IP 保留

当客户端和目标 IP 版本相匹配时(由侦听器规则启用),流量直接流动,无需协议转换,从而保持端到端源 IP 的保护。这preserve_client_ip需要在目标组上启用。

加权目标组

监听器规则支持ForwardConfig多个加权目标组,这对于金丝雀部署或逐步迁移很有用。每个目标组的权重介于 0 到 999 之间,权重为 0 的组不会收到新的连接。

与应用程序负载均衡器监听器规则的关系

网络负载均衡器和应用程序负载均衡器都使用source-ip条件,但它们在不同的属性上匹配。应用程序负载均衡器将源地址与一个或多个 CIDR 块 (SourceIpConfig.Values) 进行匹配,而网络负载均衡器根据源连接的 IP 地址类型进行匹配 (SourceIpConfig.IpAddressType)。简而言之,应用程序负载均衡器按特定地址范围路由,网络负载均衡器按IP版本路由。

定价和可用性

监听器规则适用于所有 Amazon 商业区域和 Amazon GovCloud (美国)地区。该功能不收取额外费用。您需要为负载均衡器小时数和 LCU 支付标准网络负载均衡器定价。将单独的 IPv4 和 IPv6 网络负载均衡器整合到单个双栈网络负载均衡器上,可以省去第二个负载均衡器的工时和 LCU 费用。

有关更多信息,请参阅 您的网络负载均衡器的监听器规则

安全侦听器

要使用 TLS 侦听器,您必须在负载均衡器上部署至少一个服务器证书。负载均衡器先使用此服务器证书终止前端连接,再解密来自客户端的请求,然后将请求发送到目标。注意,如果您需要将加密流量传输至目标且负载均衡器不对其进行解密,则可以在端口 443 上创建 TCP 侦听器,而不是创建 TLS 侦听器。负载均衡器将按原样将请求传输至目标,而不解密请求。

Elastic Load Balancing 使用 TLS 协商配置(称为安全策略)在客户端与负载均衡器之间协商 TLS 连接。安全策略是协议和密码的组合。协议在客户端与服务器之间建立安全连接,确保在客户端与负载均衡器之间传递的所有数据都是私密数据。密码是使用加密密钥创建编码消息的加密算法。协议使用多种密码对 Internet 上的数据进行加密。在 连接协商过程中,客户端和负载均衡器会按首选项顺序提供各自支持的密码和协议的列表。为安全连接选择服务器列表中与任一客户端的密码匹配的第一个密码。

网络负载均衡器不支持双向 TLS 身份验证 (mTLS)。要获得 mTLS 支持,请创建 TCP 侦听器,而不是 TLS 侦听器。负载均衡器按原样传输请求,因此您可以在目标上实施 mTLS。

网络负载均衡器支持使用 PSK 进行 TLS 1.3 的 TLS 恢复,以及使用会话票证进行 TLS 1.2 及更早版本的 TLS 恢复。不支持基于会话 ID 的恢复,也不支持在侦听器中配置多个证书并使用 SNI 时的恢复。未实现 0-RTT 数据功能和 early_data 扩展。

有关相关演示,请参阅网络负载均衡器上的 TLS 支持网络负载均衡器上的 SNI 支持

ALPN 策略

Application-Layer 协议协商 (ALPN) 是一个 TLS 扩展,在最初的 TLS 握手问候消息中发送。借助 ALPN,应用层可以协商应通过安全连接使用哪些协议,例如 HTTP/1和 HTTP/2。

当客户端启动 ALPN 连接时,负载均衡器将客户端 ALPN 首选项列表与其 ALPN 策略进行比较。如果客户端支持来自 ALPN 策略的协议,则负载均衡器会根据 ALPN 策略的首选项列表建立连接。否则,负载均衡器不使用 ALPN。

支持的 ALPN 策略

以下是支持的 ALPN 策略:

HTTP1Only

仅限谈判 HTTP/1。*. APN 首选项列表为 http/1 .1、 http/1 .0。

HTTP2Only

仅限谈判 HTTP/2。ALPN 首选项列表为 h2。

HTTP2Optional

优先 HTTP/1选择 .* 而不是 HTTP/2 (这可能对 HTTP/2 测试有用)。ALPN 首选项列表为 http/1 .1、 http/1 .0、h2。

HTTP2Preferred

HTTP/2 优先于 HTTP/1 .*. APN 首选项列表为 h2、 http/1 .1、 http/1 .0。

None

不协商 PN。这是默认模式。

启用 ALPN 连接

您可以在创建或修改 TLS 侦听器时启用 ALPN 连接。有关更多信息,请参阅添加侦听器更新 ALPN 策略