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

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

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

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

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

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

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

目标安全组

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

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

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

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

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

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

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

客户端 IP 保留的工作原理

除非将 preserve_client_ip.enabled 属性设置为 true,否则网络负载均衡器不会保留客户端 IP 地址。此外,使用双栈网络负载均衡器,在将地址转换为地址或 IPv6 转换为地址时 IPv6,客户端 IP IPv4 地址保留不起作用。 IPv4 只有当客户端和目标 IP 地址同时存在 IPv4 或两者兼而有之时,客户端 IP 地址保留才有效 IPv6。

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

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

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

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

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

网络 ACLs

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

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

实例子网的推荐规则
Inbound
协议 端口范围 评论
Client IP addresses listener target port 允许客户端流量(IP 保留:ON
VPC CIDR listener target port 允许客户端流量(IP 保留:OFF
VPC CIDR health check health check 允许运行状况检查流量
Outbound
目标位置 协议 端口范围 评论
Client IP addresses listener 1024-65535 允许将流量返回到客户端(IP 保留:ON
VPC CIDR listener 1024-65535 允许将流量返回到客户端(IP 保留:OFF
VPC CIDR health check 1024-65535 允许运行状况检查流量

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

负载均衡器子网的推荐规则
Inbound
协议 端口范围 评论
Client IP addresses listener listener 允许客户端流量
VPC CIDR listener 1024-65535 允许来自目标的响应
VPC CIDR health check 1024-65535 允许运行状况检查流量
Outbound
目标位置 协议 端口范围 评论
Client IP addresses listener 1024-65535 允许回复客户端
VPC CIDR listener target port 允许向目标发出请求
VPC CIDR health check health check 允许对目标进行运行状况检查

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

共享子网

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

所有 AWS 区域都支持网络负载均衡器的共享子网,但不包括:

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

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

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

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

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

注册目标

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

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

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

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

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

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

  • 按 IP 地址为 IPv4 目标组注册目标时,您注册的 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)

  • 按 IP 地址为 IPv6 目标组注册目标时,您注册的 IP 地址必须位于 VPC IPv6 CIDR 块内或对等 VPC 的 IPv6 CIDR 块内。

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

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

Console
注册目标
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

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

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

  4. 选择目标选项卡。

  5. 选择注册目标

  6. 如果目标组的目标类型是instance,请选择可用实例,根据需要覆盖默认端口,然后在下面选择 “包含为待处理”。

  7. 如果目标组的目标类型为ip,则为每个 IP 地址选择网络,输入 IP 地址和端口,然后在下面选择包含为待处理

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

  9. 选择注册待定目标

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

以下示例将 Application Load Balancer 注册为目标。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=application-load-balancer-arn
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

取消注册目标

如果应用程序需求减少或者您需要为目标提供服务,您可以从目标组取消注册目标。取消注册目标将从目标组中删除目标,但不会影响目标。一旦取消注册,负载均衡器就会停止将流量路由到目标。目标将进入 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