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

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

网关负载均衡器的目标组

每个目标组均用于将请求路由到一个或多个已注册的目标。创建侦听器时,您为其默认操作指定目标组。流量将转发到在侦听器规则中指定的目标组。您可以为不同类型的请求创建不同的目标组。

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

路由配置

网关负载均衡器的目标组支持以下协议和端口:

  • 协议:GENEVE

  • 端口:6081

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 地址。

已注册目标

您的网关负载均衡器充当客户端的单一接触点,并跨其运行正常的已注册目标分配传入流量。每个目标组在为网关负载均衡器启用的每个可用区中必须至少有一个已注册目标。您可以将每个目标注册到一个或多个目标组中。

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

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

目标组属性

您可以对目标组使用以下属性:

deregistration_delay.timeout_seconds

Elastic Load Balancing 在将取消注册目标的状态从 draining 更改为 unused 之前需等待的时间。范围为 0-3600 秒。默认值为 300 秒。

stickiness.enabled

指示是否为目标组起用了可配置的流量粘性。可能的值为 truefalse。默认为 false。当该属性设置为 false 时,将使用 5_tuple。

stickiness.type

指示流量粘性的类型。对于与网关负载均衡器关联的目标组,可能的值为:

  • source_ip_dest_ip

  • source_ip_dest_ip_proto

target_failover.on_deregistration

指示当注销某个目标时,网关负载均衡器将如何处理现有的流量。可能的值为 rebalanceno_rebalance。默认为 no_rebalance。这两项属性(target_failover.on_deregistrationtarget_failover.on_unhealthy)不可分别设置。您必须为这两项属性设置相同的值。

target_failover.on_unhealthy

指示当某个目标运行不正常时,网关负载均衡器将如何处理现有的流量。可能的值为 rebalanceno_rebalance。默认为 no_rebalance。这两项属性(target_failover.on_deregistrationtarget_failover.on_unhealthy)不可分别设置。您必须为这两项属性设置相同的值。

取消注册延迟

当注销某个目标时,网关负载均衡器会按如下方式管理流向该目标的流量:

新流量

网关负载均衡器将停止发送新流量。

现有流量

网关负载均衡器按照协议来处理现有流量:

  • TCP:如果现有流量的空闲时间超过 350 秒,则会将其关闭。

  • 其他协议:如果现有流量的空闲时间超过 120 秒,则会将其关闭。

为帮助耗尽现有流量,您可以为目标组启用流量再平衡。有关更多信息,请参阅目标失效转移

在超时到期之前,已注销的目标将显示处于 draining 状态。注销延迟超时到期后,目标的状态将变为 unused

使用控制台更新取消注册延迟值
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

  4. 组详细信息页面的属性部分中,选择编辑

  5. 编辑属性页面上,根据需要更改注销延迟的值。

  6. 选择 Save changes(保存更改)。

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

使用 modify-target-group-attributes 命令。

目标失效转移

借助目标失效转移功能,您可以指定当目标运行不正常或注销时,网关负载均衡器将如何处理现有的流量。默认情况下,即使目标未通过运行状况检查或已注销,网关负载均衡器仍会继续将现有流量发送到同一个目标。您可以通过重新哈希处理这些流量(rebalance)或将其保留为默认状态(no_rebalance)来管理这些流量。

无再平衡

网关负载均衡器继续将现有流量发送到未通过运行状况检查或耗尽的目标。但新流量会发送到运行正常的目标。这是默认行为。

再平衡

网关负载均衡器会重新哈希现有流量,并在注销延迟超时到期后将其发送到运行正常的目标。

对于已注销的目标,失效转移的最短时间将取决于注销延迟。在注销延迟到期之前,目标不会被标记为已注销。

对于运行不正常的目标,失效转移的最短时间将取决于目标组的运行状况检查配置(间隔时间阈值)。这是目标在被标记为运行不正常前将经过的最短时间。超过此时间后,由于需要额外的传播时间和 TCP 重传回退,网关负载均衡器可能需要在几分钟后才能将新流量重新路由到运行正常的目标。

使用新版 EC2 体验更新目标失效转移值
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

  4. 组详细信息页面的属性部分中,选择编辑

  5. 编辑属性页面上,根据需要更改失效转移的值。

  6. 选择 Save changes(保存更改)。

通过 Amazon CLI 更新目标失效转移值

使用 modify-target-group-attributes 命令和以下键值对:

  • 键 = target_failover.on_deregistration,值 = no_rebalance(默认)或 rebalance

  • 键 = target_failover.on_unhealthy,值 = no_rebalance(默认)或 rebalance

注意

这两个属性(target_failover.on_deregistrationtarget_failover.on_unhealthy)的值必须具有相同。

流量粘性

默认情况下,网关负载均衡器使用 5 元组(对于 TCP/UDP 流量)来保持流向特定目标设备的流量粘性。5 元组包括源 IP、源端口、目标 IP、目标端口和传输协议。您可以使用粘性类型属性来修改默认值(5 元组),然后选择 3 元组(源 IP、目标 IP 和传输协议)或 2 元组(源 IP 和目标 IP)。

流量粘性注意事项
  • 流量粘性是在目标组级别配置和应用的,并且适用于所有流向目标组的流量。

  • Amazon Transit Gateway 设备模式开启时,不支持 2 元组和 3 元组流量粘性。要在您的 Amazon Transit Gateway 上使用设备模式,请在网关负载均衡器上使用 5 元组流量粘性

  • 流量粘性可能会导致连接和流量分布不均,并相应影响目标的可用性。建议您在修改目标组的流量粘性类型之前,先终止或耗尽所有现有的流量。

通过控制台更新流量粘性
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

  4. 组详细信息页面的属性部分中,选择编辑

  5. 编辑属性页面上,根据需要更改流量粘性的值。

  6. 选择 Save changes(保存更改)。

通过 Amazon CLI 启用或修改流量粘性

使用 modify-target-group-attributes 命令以及 stickiness.enabledstickiness.type 目标组属性。