VPC Lattice 中的目标组 - Amazon VPC Lattice

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

VPC Lattice 中的目标组

VPC Lattice 目标组是运行应用程序或服务的目标或计算资源的集合。目标可以是 EC2 实例、IP 地址、Lambda 函数、应用程序负载均衡器,或 Kubernetes 容器组。您还可以将现有服务附加到目标组。有关将 Kubernetes 与 VPC Lattice 结合使用的更多信息,请参阅 AWS 网关 API 控制器用户指南

每个目标组均用于将请求路由到一个或多个已注册的目标。在创建侦听器规则时,您可以指定目标组和条件。满足规则条件时,流量会转发到相应的目标组。您可以为不同类型的请求创建不同的目标组。例如,为一般请求创建一个目标组,为包含特定规则条件(如路径或标头值)的请求创建其他目标组。


            具有侦听器、侦听器规则和两个目标组的服务。

您可以根据目标组来定义服务的运行状况检查设置。每个目标组均使用默认运行状况检查设置,除非您在创建目标组时将其覆盖或稍后对其进行修改。在侦听器的规则中指定目标组后,服务将持续监控向该目标组注册的所有目标的运行状况。服务将请求路由到运行正常的已注册目标。

要在规则中为服务侦听器指定目标组,目标组必须与服务位于同一账户中。

VPC Lattice 目标组与弹性负载均衡提供的目标组类似,但不可互换。

路由配置

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

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

  • 协议:HTTP、HTTPS

  • 端口:1-65535

如果目标组配置了 HTTPS 协议或使用 HTTPS 运行状况检查,则与目标的 TLS 连接将使用来自监听器的安全策略。VPC Lattice 使用您在目标上安装的证书与目标建立 TLS 连接。VPC 莱迪思不验证这些证书。因此,您可以使用自签名证书或已过期的证书。VPC Lattice和目标之间的流量在数据包级别进行身份验证,因此即使目标上的证书无效,也不会面临 man-in-the-middle 攻击或欺骗的风险。

路由算法

默认情况下,使用循环路由算法将请求路由到运行状况良好的目标。

当 VPC Lattice 服务收到请求时,会使用以下流程:

  1. 按优先级顺序评估侦听器规则以确定要应用的规则。

  2. 使用默认的循环算法,从规则操作的目标组中选择一个目标。每个目标组的路由都是单独进行的,即使某个目标已在多个目标组中注册。

如果目标组仅包含运行状况不良的注册目标,则会将请求路由到所有目标,而不考虑其运行状况如何。这意味着,如果所有目标同时未通过运行状况检查,则 VPC Lattice 服务将故障打开。故障打开的作用是根据轮循算法,允许流量进入所有目标,无论其运行状况如何。

Target type

创建目标组时,指定其目标类型,此类型将确定您在向此目标组注册目标时指定的目标的类型。创建目标组后,您无法更改其目标类型。

以下是可能的目标类型:

INSTANCE

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

IP

目标是 IP 地址。

LAMBDA

目标是 Lambda 函数。

ALB

目标是 Application Load Balancer。

注意事项
  • 如果目标类型为 IP,则必须为目标组指定来自 VPC 子网的 IP 地址。如果需要从此 VPC 外部注册 IP 地址,请创建类型为 ALB 的目标组,并向应用程序负载均衡器注册 IP 地址。

  • 如果目标类型为 IP,则无法注册 VPC 端点或公开可路由 IP 地址。

  • 如果目标类型为 LAMBDA,则可以注册单个 Lambda 函数。当服务收到对 Lambda 函数的请求时,将会调用 Lambda 函数。如果要向服务注册多个 lambda 函数,则需要使用多个目标组。

  • 如果目标类型为 ALB,您最多可以将单个内部应用程序负载均衡器注册为两个 VPC Lattice 服务的目标。为此,请向两个单独的目标组注册应用程序负载均衡器,这两个目标组用于两个不同的 VPC Lattice 服务。此外,目标应用程序负载均衡器必须至少有一个侦听器,其端口与目标组端口匹配。

  • 要将 ECS 任务注册为目标,请使用 ALB 目标类型,并为 Amazon ECS 服务注册应用程序负载均衡器。有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的服务负载均衡

  • 要将 EKS 容器组注册为目标,请使用 AWS 网关 API 控制器,该控制器从 Kubernetes 服务获取 IP 地址。

IP 地址类型

当您创建目标类型为 IP 的目标组时,您可以为目标组指定 IP 地址类型。此操作指定负载均衡器使用何种类型的地址向目标发送请求,以及运行状况检查。可能的值为 IPv4IPv6。默认为 IPV4

注意事项
  • 如果您创建 IP 地址类型为 IPv6 的目标组,则为目标组指定的 VPC 必须具有 IPv6 地址范围。

  • 向目标组注册的 IP 地址必须与目标组的 IP 地址类型匹配。例如,如果 IP 地址类型为 IPv4,则无法向目标组注册 IPv6 地址。

  • 向目标组注册的 IP 地址必须在您为目标组指定 VPC 的 IP 地址范围内。

协议版本

默认情况下,服务使用 HTTP/1.1 向目标发送请求。您可以通过协议版本使用 HTTP/2 或 gRPC 向目标发送请求。

下表汇总了请求协议和目标组协议版本组合的结果。

请求协议 协议版本 结果
HTTP/1.1 HTTP/1.1 成功
HTTP/2 HTTP/1.1 成功
gRPC HTTP/1.1 错误
HTTP/1.1 HTTP/2 错误
HTTP/2 HTTP/2 成功
gRPC HTTP/2 如果目标支持 grPC,则成功
HTTP/1.1 gRPC 错误
HTTP/2 gRPC 如果 POST 请求,则成功
gRPC gRPC 成功
gRPC 协议版本的注意事项
  • 唯一支持的侦听器协议是 HTTPS。

  • 唯一支持的目标类型是 INSTANCEIP

  • 服务会解析 gRPC 请求,并根据包、服务和方法将 gRPC 调用路由到相应的目标组。

  • 不能将 Lambda 函数用作目标。

HTTP/2 协议版本的注意事项
  • 唯一支持的侦听器协议是 HTTPS。您可以为目标组协议选择 HTTP 或 HTTPS。

  • 唯一支持的侦听器规则是正向和固定响应。

  • 唯一支持的目标类型是 INSTANCEIP

  • 服务支持来自客户端的流。服务不支持发往目标的流。