目标组的运行状况检查 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

目标组的运行状况检查

您可以将目标注册到一个或多个目标组中。注册过程完成后,网关负载均衡器会立即开始将请求路由到新注册的目标。完成注册过程和开始运行状况检查可能需要几分钟时间。

网关负载均衡器会定期向每个已注册的目标发送请求以检查其状态。在完成每次运行状况检查后,网关负载均衡器将关闭为运行状况检查而建立的连接。

运行状况检查设置

您可以使用以下设置为目标组中的目标配置主动运行状况检查。如果运行状况检查超过指定的UnhealthyThresholdCount连续失败次数,则 Gateway Load Balancer 会使目标停止服务。当运行状况检查超过指定的HealthyThresholdCount连续成功次数时,Gateway Load Balancer 会将目标重新投入使用。

设置 描述

HealthCheckProtocol

对目标执行运行状况检查时负载均衡器使用的协议。可能的协议有 HTTP、HTTPS 和 TCP。默认值为 TCP。

HealthCheckPort

对目标执行运行状况检查时网关负载均衡器使用的端口。范围为 1 至 65535。默认值为 80。

HealthCheckPath

[HTTP/HTTPS 运行状况检查] 运行状况检查路径,它是运行状况检查目标上的目的地。默认值为 /。

HealthCheckTimeoutSeconds

以秒为单位的时间长度,在此期间内,没有来自目标的响应意味着无法通过运行状况检查。范围为 2 至 120。默认值为 5。

HealthCheckIntervalSeconds

各个目标的运行状况检查之间的大约时间量 (以秒为单位)。范围为 5 至 300。默认值为 10 秒。此值必须大于或等于HealthCheckTimeoutSeconds

重要

网关负载均衡器的运行状况检查是分布式的,使用共识机制来确定目标运行状况。因此,预计目标设备将在配置的时间间隔内收到几次运行状况检查。

HealthyThresholdCount

将不正常目标视为正常运行之前所需的连续运行状况检查成功次数。范围为 2 至 10。默认值为 5。

UnhealthyThresholdCount

将目标视为不正常之前所需的连续运行状况检查失败次数。范围为 2 至 10。默认值为 2。

Matcher

[HTTP/HTTPS 运行状况检查] 检查来自目标的成功响应时使用的 HTTP 代码。该值必须为 200-399。

目标运行状况

您必须首先将目标注册到目标组,在侦听器规则中指定其目标组,并确保已为网关负载均衡器启用目标所在的可用区,然后网关负载均衡器才会向目标发送运行状况检查请求。

下表描述已注册目标的正常状态的可能值。

描述

initial

网关负载均衡器正在注册目标或正在对目标执行初始运行状况检查。

相关原因代码:Elb.RegistrationInProgress | Elb.InitialHealthChecking

healthy

目标正常。

相关原因代码:无

unhealthy

目标未响应运行状况检查或未通过运行状况检查。

相关原因代码:Target.FailedHealthChecks

unused

目标未注册到目标组,侦听器规则中未使用目标组,或者目标在没有启用的可用区中,或者目标处于停止或终止状态。

相关原因代码:Target.NotRegistered |Target.NotInUse |Target.InvalidState |Target.IpUnusable

draining

目标正在取消注册,连接即将耗尽。

相关原因代码:Target.DeregistrationInProgress

unavailable

目标运行状况不可用。

相关原因代码:Elb.InternalError

运行状况检查原因代码

如果目标的状态是 Healthy 以外的任何值,则 API 将返回问题的原因代码和描述,并且控制台将显示相同的描述。以 Elb 开头的原因代码源自网关负载均衡器端,以 Target 开头的原因代码源自目标端。

原因代码 说明

Elb.InitialHealthChecking

正在进行初始运行状况检查

Elb.InternalError

由于内部错误,运行状况检查失败

Elb.RegistrationInProgress

目标注册正在进行中

Target.DeregistrationInProgress

目标取消注册正在进行中

Target.FailedHealthChecks

运行状况检查失败

Target.InvalidState

目标处于停止状态

目标处于终止状态

目标处于终止或停止状态

目标处于无效状态

Target.IpUnusable

该 IP 地址正被负载均衡器使用,因此无法用作目标

Target.NotInUse

没有将目标组配置为接收来自网关负载均衡器的流量

目标位于尚未为网关负载均衡器启用的可用区

Target.NotRegistered

目标未注册到目标组

网关负载均衡器目标故障场景

现有流:默认情况下,除非流量超时或重置,否则无论目标的运行状况和注册状态如何,现有流量都会转到同一个目标。这种方法有助于连接耗尽,并且可以容纳有时由于 CPU 使用率过高而无法响应运行状况检查的第三方防火墙。有关更多信息,请参阅目标故障转移

新流量:新流量将发送到运行正常的目标。在对流量做出负载均衡决策后,即使该目标运行不正常或其他目标变为运行正常,网关负载均衡器也会将流量发送到同一个目标。

当所有目标都运行不正常时,网关负载均衡器会随机选择一个目标,并在流量生命周期内将流量转发给该目标,直到该目标被重置或超时为止。由于流量被转发到运行不正常的目标,因此流量会被丢弃,直到该目标恢复正常为止。

TLS 1.3:如果目标组配置了 HTTPS 运行状况检查,则如果其注册目标仅支持 TLS 1.3,则无法通过运行状况检查。这些目标必须支持 TLS 的早期版本,例如 TLS 1.2。

跨可用区负载均衡:默认情况下,跨可用区负载均衡处于禁用状态。如果启用跨可用区负载均衡,则每个网关负载均衡器都能看到所有可用区中的所有目标,并且无论位于哪个可用区,这些目标都将受到同等对待。

可用区之间的负载均衡和运行状况检查决策始终是独立的。即使启用了跨可用区负载均衡,现有流量和新流量的行为也与上述相同。有关更多信息,请参阅 Elastic Load Balancing 用户指南中的跨可用区负载均衡

检查目标的运行状况

您可以检查已注册到目标组的目标的运行状况。

使用控制台检查目标的运行状况
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

  4. Targets (目标) 选项卡上,Status (状态) 列指示每个目标的状态。

  5. 如果目标状态是 Healthy 以外的任何值,则 Status details (状态详细信息) 列将包含更多信息。

要检查目标的生命值,请使用 Amazon CLI

使用 describe-target-health 命令。此命令的输出包含目标运行状况。如果状态是 Healthy 以外的任何值,则它包括原因代码。

接收有关运行状况不佳的目标的电子邮件通知

使用 CloudWatch 警报触发 Lambda 函数以发送有关不健康目标的详细信息。有关 step-by-step 说明,请参阅以下博客文章:识别负载均衡器的运行状况不佳的目标

修改运行状况检查设置

您可以修改目标组的部分运行状况检查设置。

使用控制台修改目标组的运行状况检查设置
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

  4. 组详细信息选项卡的运行状况检查设置部分中,选择编辑

  5. Edit health check settings (编辑运行状况检查设置) 页面上,根据需要修改设置,然后选择 Save changes (保存更改)

要修改目标群体的健康检查设置,请使用 Amazon CLI

使用 modify-target-group 命令。