Elastic Load Balancing
传统负载均衡器
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

配置传统负载均衡器的连接耗尽

要确保传统负载均衡器停止向正在取消注册或运行状况不佳的实例发送请求,并使现有连接保持打开状态,请使用连接耗尽。这将使负载均衡器能够完成向正在取消注册或运行状况不佳的实例发出的进行中请求。

启用连接耗尽时,您可以指定在将实例报告为已取消注册之前,负载均衡器使连接保持活动状态的最大时间。最大超时值可设置为介于 1 和 3600 秒之间 (默认值为 300 秒)。当达到最大时间限制时,负载均衡器会强制关闭与正在取消注册的实例的连接。

在为进行中请求提供服务时,负载均衡器会将正在取消注册的实例的状态报告为 InService: Instance deregistration currently in progress。当正在取消注册的实例为所有进行中请求提供完服务时,或在达到最大超时限制时,负载均衡器会将实例状态报告为 OutOfService: Instance is not currently registered with the LoadBalancer

如果实例运行状况不佳,则负载均衡器会将实例状态报告为 OutOfService。如果存在向运行状况不佳的实例发出的进行中请求,则会完成这些请求。最大超时限制不适用于与运行状况不佳的实例的连接。

如果您的实例属于 Auto Scaling 组,并且为负载均衡器启用了连接耗尽,则 Auto Scaling 在由于扩展事件或运行状况检查替换而终止实例之前,将会等待进行中的请求完成或等待最大超时过期。

如果您希望负载均衡器立即关闭与正在取消注册的实例或运行状况不佳的实例的连接,则可以禁用连接耗尽。禁用连接耗尽后,不会完成向正在取消注册的实例或运行状况不佳的实例发出的任何进行中请求。

启用 Connection Draining

您可以随时为负载均衡器启用连接耗尽。

使用控制台启用连接耗尽

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

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. Instances 选项卡上,对于 Connection Draining,选择 (Edit)

  5. Configure Connection Draining 页面上,选择 Enable Connection Draining

  6. (可选) 对于 Timeout,键入在 1 到 3600 秒之间的值。

  7. 选择 Save

使用 AWS CLI 启用连接耗尽

使用以下 modify-load-balancer-attributes 命令:

aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes "{\"ConnectionDraining\":{\"Enabled\":true,\"Timeout\":300}}"

以下为响应示例:

{ "LoadBalancerAttributes": { "ConnectionDraining": { "Enabled": true, "Timeout": 300 } }, "LoadBalancerName": "my-loadbalancer" }

禁用连接耗尽

您可以随时为负载均衡器禁用连接耗尽。

使用控制台禁用连接耗尽

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

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. Instances 选项卡上,对于 Connection Draining,选择 (Edit)

  5. Configure Connection Draining 页面上,清除 Enable Connection Draining

  6. 选择 Save

使用 AWS CLI 禁用连接耗尽

使用以下 modify-load-balancer-attributes 命令:

aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes "{\"ConnectionDraining\":{\"Enabled\":false}}"

以下为响应示例:

{ "LoadBalancerAttributes": { "ConnectionDraining": { "Enabled": false, "Timeout": 300 } }, "LoadBalancerName": "my-loadbalancer" }