为网络负载均衡器注册目标 - Elastic Load Balancing

为网络负载均衡器注册目标

当您的目标准备好处理请求时,您将其注册到一个或多个目标组。目标组的目标类型将确定如何注册目标。例如,您可以注册实例 ID、IP 地址或应用程序负载均衡器。只要注册过程完成且目标通过初始运行状况检查,网络负载均衡器就会开始将请求路由至目标。完成注册过程和开始运行状况检查可能需要几分钟时间。有关更多信息,请参阅 网络负载均衡器目标组的运行状况检查

如果当前已注册目标的需求增加,您可以注册其他目标以便满足该需求。如果对已注册目标的需求减少,您可以从目标组中取消注册目标。完成取消注册过程和负载均衡器停止将请求路由到目标可能需要几分钟时间。如果需求随后增加,您可以再次向目标组注册已取消注册的目标。如果您需要为目标提供服务,您可以取消注册,然后在服务完成后重新注册。

在取消注册目标时,Elastic Load Balancing 会一直等待,直到进行中的请求完成。这称作连接耗尽。在连接耗尽期间,目标的状态为 draining。在取消注册完成后,目标的状态将更改为 unused。有关更多信息,请参阅 取消注册延迟

如果要通过实例 ID 来注册目标,则可以将负载均衡器与 Auto Scaling 组一同使用。将目标组挂接到 Auto Scaling 组并且该组扩展后,由 Auto Scaling 组启动的实例将自动在目标组中注册。如果您将负载均衡器与 Auto Scaling 组分离,则实例会自动从目标组中取消注册。有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的将负载均衡器挂接到自动扩缩组

目标安全组

在将目标添加到目标组之前,请将与目标关联的安全组配置为接受来自网络负载均衡器的流量。

对目标安全组的建议(如果负载均衡器有与之关联的安全组)
  • 允许客户端流量:添加规则,其引用与负载均衡器关联的安全组

  • 允许 PrivateLink 流量:如果您将负载均衡器配置为评估通过 AWS PrivateLink 发送的流量的入站规则,则在流量端口上添加规则,其接受来自负载均衡器安全组的流量。否则,添加规则,其在流量端口上接受来自负载均衡器私有 IP 地址的流量。

  • 接受负载均衡器运行状况检查:添加规则,其在运行状况检查端口上接受来自负载均衡器安全组的运行状况检查流量。

对目标安全组的建议(如果负载均衡器没有与安全组关联)
  • 允许客户端流量:如果负载均衡器保留客户端 IP 地址,则添加规则,其在流量端口上接受来自已批准客户端 IP 地址的流量。否则,添加规则,其在流量端口上接受来自负载均衡器私有 IP 地址的流量。

  • 允许 PrivateLink 流量:添加规则,其在流量端口上接受来自负载均衡器私有 IP 地址的流量。

  • 接受负载均衡器运行状况检查:添加规则,其在运行状况检查端口上接受来自负载均衡器私有 IP 地址的运行状况检查流量。

客户端 IP 保留的工作原理

除非将 preserve_client_ip.enabled 属性设置为 true,否则网络负载均衡器不会保留客户端 IP 地址。此外,在双栈网络负载均衡器中,当将 IPv4 地址转换为 IPv6 地址或将 IPv6 地址转换为 IPv4 地址时,客户端 IP 地址保留将失效。只有当客户端和目标 IP 地址都是 IPv4 或同时是 IPv6 时,客户端 IP 地址保留才有效。

使用控制台查找负载均衡器私有 IP 地址
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Network Interfaces

  3. 在搜索字段中,输入网络负载均衡器的名称。每个负载均衡器的子网有一个网络接口。

  4. 在每个网络接口的详细信息选项卡上,从私有 IPv4 地址中复制地址。

有关更多信息,请参阅 更新网络负载均衡器的安全组

网络 ACL

在将 EC2 实例注册为目标时,必须确保实例子网的网络 ACL 允许侦听器端口和运行状况检查端口上的流量。VPC 的默认网络访问控制列表 (ACL) 允许所有入站和出站流量。如果要创建自定义网络 ACL,请确保它们允许相应的流量。

与实例子网关联的网络 ACL 必须允许面向 Internet 的负载均衡器的以下流量。

实例子网的推荐规则
Inbound
协议 端口范围 评论
客户端 IP 地址 侦听器 目标端口 Allow client traffic (IP Preservation: )
VPC CIDR 侦听器 目标端口 Allow client traffic (IP Preservation: 关闭)
VPC CIDR 运行状况检查 运行状况检查 Allow health check traffic
Outbound
目的地 协议 端口范围 评论
客户端 IP 地址 侦听器 1024-65535 Allow return traffic to client (IP Preservation: )
VPC CIDR 侦听器 1024-65535 Allow return traffic to client (IP Preservation: 关闭)
VPC CIDR 运行状况检查 1024-65535 Allow health check traffic

与负载均衡器子网关联的网络 ACL 必须允许面向 Internet 的负载均衡器的以下流量。

负载均衡器子网的推荐规则
Inbound
协议 端口范围 评论
客户端 IP 地址 侦听器 侦听器 Allow client traffic
VPC CIDR 侦听器 1024-65535 Allow response from target
VPC CIDR 运行状况检查 1024-65535 Allow health check traffic
Outbound
目的地 协议 端口范围 评论
客户端 IP 地址 侦听器 1024-65535 Allow responses to clients
VPC CIDR 侦听器 目标端口 Allow requests to targets
VPC CIDR 运行状况检查 运行状况检查 Allow health check to targets

对于内部负载均衡器,您的实例和负载均衡器节点的子网的网络 ACL 必须在侦听器端口和临时端口上允许进出 VPC CIDR 的入站流量和出站流量。

共享子网

参与者可以在共享 VPC 中创建网络负载均衡器。参与者无法注册在未与其共享的子网中运行的目标。

所有 AWS 区域都支持网络负载均衡器的共享子网,但以下区域除外:

  • 亚太地区(大阪)ap-northeast-3

  • 亚太地区(香港)ap-east-1

  • 中东(巴林)me-south-1

  • AWS 中国(北京)cn-north-1

  • AWS 中国(宁夏)cn-northwest-1

注册目标

每个目标组在为负载均衡器启用的每个可用区中必须至少有一个已注册目标。

目标组的目标类型决定了您可以注册的目标类型。有关更多信息,请参阅 Target type。使用以下信息将目标注册到类型为 instanceip 的目标组中。如果目标类型为 alb,请参阅 使用应用程序负载均衡器作为目标

要求和注意事项
  • 当您注册实例时,实例必须处于 running 状态。

  • 如果实例采用以下实例类型,则不能利用实例 ID 注册实例:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 或 T1。

  • 按实例 ID 注册目标时,实例必须与网络负载均衡器位于同一个 VPC 中。如果实例所在的 VPC 与负载均衡器 VPC 是对等的(位于同一区域或不同区域),则不能按实例 ID 注册实例。可以用 IP 地址注册这些实例。

  • 当按实例 ID 为 IPv6 目标组注册目标时,必须为目标分配主 IPv6 地址。要了解更多信息,请参阅《Amazon EC2 用户指南》中的 IPv6 地址

  • 在为 IPv4 目标组通过 IP 地址注册目标时,您注册的 IP 地址必须来自以下 CIDR 数据块之一:

    • 目标组的 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)

  • 在为 IPv6 目标组通过 IP 地址注册目标时,您注册的 IP 地址必须位于 VPC 的 IPv6 CIDR 数据块内,或位于已建立对等连接的 VPC 的 IPv6 CIDR 数据块内。

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

  • 对于 UDP、TCP_UDP、QUIC 和 TCP_QUIC 目标组,如果实例位于负载均衡器 VPC 之外,或者采用以下实例类型之一,则不要用 IP 地址注册实例:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 或 T1。如果目标驻留在负载均衡器 VPC 之外或者采用不受支持的实例类型,则目标可能能够接收来自负载均衡器的流量,但随后无法响应。

QUIC 特定要求和注意事项
  • 注册到 QUIC 或 TCP_QUIC 目标组的所有目标都必须指定服务器 ID。

  • 对于存在于网络负载均衡器的侦听器中的所有目标,服务器 ID 必须是唯一的。

  • QUIC 的服务器 ID 始终为 8 个字节。在注册目标时,服务器 ID 必须采用 0x 后接 16 位十六进制字符的格式。

  • 使用服务器 ID 注册目标后,该 ID 将不可更改。要更改目标的服务器 ID,必须先将其取消注册,然后再使用新的服务器 ID 进行注册。

  • 目标标识符和端口组合必须具有一个服务器 ID。在同一 VPC 内,不支持为相同的 IP 或实例 ID 与端口组合使用不同的服务器 ID。

  • 避免在 6 小时内为不同的目标重复使用相同的服务器 ID。

Console
要注册目标
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的负载均衡下,选择目标组

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

  4. 选择目标选项卡。

  5. 选择注册目标

  6. 如果目标组的目标类型是 instance,则选择可用的实例,根据需要覆盖默认端口,然后选择在下面以待注册的形式添加

  7. 若目标组的目标类型为 ip,则需为每个 IP 地址选择网络,输入 IP 地址及端口,并选择在下面以待注册的形式添加

  8. 如果目标组的目标类型为 alb,则根据需要覆盖默认端口,然后选择应用程序负载均衡器。有关更多信息,请参阅 使用应用程序负载均衡器作为目标

  9. 如果目标组的协议为 QUIC 或 TCP_QUIC,请确保服务器 ID 已指定。

  10. 选择注册待处理目标

AWS CLI
要注册目标

使用 register-targets 命令。以下示例通过实例 ID 注册目标。由于未指定端口,负载均衡器将使用目标组端口。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890

以下示例通过 IP 地址注册目标。由于未指定端口,负载均衡器将使用目标组端口。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=10.0.50.10 Id=10.0.50.20

以下示例将应用程序负载均衡器注册为目标。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=application-load-balancer-arn

以下示例将目标注册到 QUIC 或 TCP_QUIC 目标组中。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=10.0.50.10,QuicServerId=0xa1b2c3d4e5f65890 Id=10.0.50.20,QuicServerId=0xa1b2c3d4e5f65999
CloudFormation
要注册目标

更新 AWS::ElasticLoadBalancingV2::TargetGroup 资源,以包含新的目标。以下示例通过实例 ID 注册两个目标。

Resources: myTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: my-target-group Protocol: HTTP Port: 80 TargetType: instance VpcId: !Ref myVPC Targets: - Id: !GetAtt Instance1.InstanceId Port: 80 - Id: !GetAtt Instance2.InstanceId Port: 80

以下示例通过实例 ID 将两个目标注册到 QUIC 或 TCP_QUIC 协议目标组中。

Resources: myTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: my-target-group Protocol: HTTP Port: 80 TargetType: instance VpcId: !Ref myVPC Targets: - Id: !GetAtt Instance1.InstanceId Port: 80 QuicServerId: 0xa1b2c3d4e5f65999 - Id: !GetAtt Instance2.InstanceId Port: 80 QuicServerId: 0xa1b2c3d4e5f65000

取消注册目标

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

Console
要取消注册目标
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的负载均衡下,选择目标组

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

  4. 目标选项卡中,选择要删除的目标。

  5. 选择注销

AWS CLI
要取消注册目标

使用 deregister-targets 命令。以下示例取消注册两个通过实例 ID 注册的目标。

aws elbv2 deregister-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890