Elastic Load Balancing
应用程序负载均衡器
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

应用程序负载均衡器的目标组

将目标注册到目标组。要将请求路由到一个目标组中的目标,请在负载均衡器的其中一个侦听器的规则中指定该目标组。

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

路由配置

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

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

  • 协议:HTTP、HTTPS

  • 端口:1-65535

如果使用 HTTPS 协议配置目标组或使用 HTTPS 运行状况检查,SSL 和目标之间的连接将使用 ELBSecurityPolicy2016-08 策略中的安全设置。

目标类型

在创建目标组时,应指定其目标类型,这决定您如何指定其目标。创建目标组后,将无法更改其目标类型。

以下是可能的目标类型:

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)

凭借这些支持的 CIDR 块,您可以将以下内容注册到目标组:ClassicLink 实例、对等 VPC 中的实例、可通过 IP 地址和端口寻址的 AWS 资源 (例如数据库) 以及通过 AWS Direct Connect 或 VPN 连接链接到 AWS 的本地资源。

重要

不能指定可公开路由的 IP 地址。

如果使用实例 ID 指定目标,则使用实例的主网络接口中指定的主私有 IP 地址将流量路由到实例。如果使用 IP 地址指定目标,则可以使用来自一个或多个网络接口的任何私有 IP 地址将流量路由到实例。这使一个实例上的多个应用程序可以使用同一端口。请注意,每个网络接口都可以有自己的安全组。

已注册目标

您的负载均衡器充当客户端的单一接触点,并跨其正常运行的已注册目标分发传入流量。您可以将每个目标注册到一个或多个目标组中。您可以使用不同的端口多次向同一目标组注册每个 EC2 实例或 IP 地址,从而使负载均衡器能够将请求路由到微服务。

如果应用程序需求增加,您可以向一个或多个目标组注册其他目标以便满足该需求。只要注册过程完成且新注册的目标通过初始运行状况检查,负载均衡器就会开始将请求路由至此目标。

如果应用程序需求减少或者您需要为目标提供服务,您可以从目标组取消注册目标。取消注册目标将从目标组中删除目标,但不会影响目标。取消注册某个目标后,负载均衡器立即停止将请求路由到该目标。目标将进入 draining 状态,直至进行中请求完成。在您准备好目标以继续接收请求时,可以重新将目标注册到目标组。

如果要通过实例 ID 来注册目标,则可以将负载均衡器与 Auto Scaling 组一同使用。将一个目标组挂接到 Auto Scaling 组后,Auto Scaling 在启动目标时会为您向该目标组注册目标。有关更多信息,请参阅 Auto Scaling 用户指南 中的将负载均衡器附加到 Auto Scaling 组

目标组属性

以下是目标组属性:

deregistration_delay.timeout_seconds

在取消注册目标前,Elastic Load Balancing 需等待的时间。范围为 0-3600 秒。默认值为 300 秒。

stickiness.enabled

指示是否启用粘性会话。

stickiness.lb_cookie.duration_seconds

Cookie 有效期 (以秒为单位)。经过这个有效期后,Cookie 即过期。最小值为 1 秒,最大值为 7 天 (604800 秒)。默认值为 1 天 (86400 秒)。

stickiness.type

粘性的类型。可能的值为 lb_cookie

取消注册延迟

Elastic Load Balancing 停止将请求发送到正在取消注册的目标。默认情况下,Elastic Load Balancing 在取消注册过程完成前会等待 300 秒,这有助于完成针对目标的进行中的请求。要更改 Elastic Load Balancing 的等待时间,请更新取消注册延迟值。请注意,您可以指定的值最大为 1 小时;Elastic Load Balancing 将等待所指定的完整时间,不管是否存在进行中的请求。

如果正在取消注册的目标在取消注册延迟结束前终止连接,客户端将收到 500 级错误响应。

取消注册的目标的初始状态为 draining。取消注册延迟结束后,取消注册过程完成,目标状态变为 unused。如果目标是 Auto Scaling 组的一部分,便可以将其终止或替换。但是,如果存在进行中的请求,负载均衡器节点和取消注册目标之间的连接将最长保持 1 小时。

使用控制台更新取消注册延迟值

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Target Groups

  3. 选择目标组。

  4. Description 选项卡上,选择 Edit attributes

  5. Edit attributes 页面上,根据需要更改 Deregistration delay 的值,然后选择 Save

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

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

粘性会话

粘性会话是用于将请求路由到目标组中的同一目标的机制。对于维护状态信息以便向客户端提供持续体验的服务器来说,这很有用。要使用粘性会话,客户端必须支持 Cookie。

当负载均衡器第一次收到来自客户端的请求时,它会将请求路由到目标并生成 Cookie 以包含在对客户端的响应中。来自客户端的下一个请求将包含 cookie。如果为目标组启用粘性会话,并且请求转至同一目标组,则负载均衡器将检测 cookie 并将请求路由到同一目标。

应用程序负载均衡器仅支持负载均衡器生成的 Cookie。该 Cookie 的名称是 AWSALB。这些 Cookie 的内容使用轮换密钥进行加密。您无法解密或修改负载均衡器生成的 Cookie。

WebSockets 连接天生具有粘性。如果客户端请求 WebSockets 连接升级,则返回 HTTP 101 状态码以接受连接升级的目标将是在 WebSockets 连接中使用的目标。在 WebSockets 升级完成后,将不会使用基于 Cookie 的粘性。

您在目标组级别启用粘性会话。您还可以设置负载均衡器生成 Cookie 的粘性持续时间,以秒为单位。系统会随每个请求设置持续时间。因此,如果客户端在各个持续时间过期前发送请求,则粘性会话会继续。如果您对多个目标组启用粘性会话,则我们建议您为所有目标组配置相同的时段。

使用控制台启用粘性会话

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Target Groups

  3. 选择目标组。

  4. Description 选项卡上,选择 Edit attributes

  5. Edit attributes 页上,执行以下操作:

    1. 选择 Enable load balancer generated cookie stickiness

    2. 对于 Stickiness duration,指定一个介于 1 秒和 7 天之间的值。

    3. 选择 Save

使用 AWS CLI 启用粘性会话

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