目标组的运行状况检查 - Elastic Load Balancing

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

目标组的运行状况检查

您的 Application Load Balancer 会定期向其注册目标发送请求以测试其状态。这些测试称为运行状况检查

每个负载均衡器节点仅将请求路由至负载均衡器的已启用可用区中的正常目标。每个负载均衡器节点均使用每个目标注册到的目标组的运行状况检查设置来检查该目标的运行状况。在注册目标后,目标必须通过一次运行状况检查才会被视为正常。在完成每次运行状况检查后,负载均衡器节点将关闭为运行状况检查而建立的连接。

如果目标组仅包含运行状况不佳的注册目标,则负载均衡器将请求路由到所有这些目标,而不考虑这些目标的运行状况。这意味着,如果在所有已启用的可用区中,所有目标都未通过运行状况检查,则负载均衡器将在失败时开放。失败时开放的效果是根据负载均衡算法,允许传输到所有已启用的可用区中的所有目标的流量,而不考虑这些目标的运行状况。

不支持健康检查 WebSockets。

运行状况检查设置

如下表所述,您可以为目标组中的目标配置运行状况检查。表中使用的设置名称是 API 中使用的名称。负载均衡器使用指定的端口、协议和运行状况检查路径,每HealthCheckIntervalSeconds秒钟向每个注册目标发送一次运行状况检查请求。每个运行状况检查请求都是独立的,其结果在整个时间间隔内持续。目标响应所用时间不影响下一运行状况检查请求的时间间隔。如果运行状况检查超过UnhealthyThresholdCount连续失败次数,则负载均衡器会使目标停止服务。当运行状况检查超过HealthyThresholdCount连续成功率时,负载均衡器会将目标重新投入使用。

设置 描述

HealthCheckProtocol

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

这些协议使用 HTTP GET 方法发送运行状况检查请求

HealthCheckPort

对目标执行运行状况检查时负载均衡器使用的端口。默认设置是使用每个目标用来从负载均衡器接收流量的端口。

HealthCheckPath

目标运行状况检查的目的地。

如果协议版本是 HTTP/1.1 或 HTTP/2,请指定有效的 URI (/path?query)。默认值为 /。

如果协议版本是 gRPC,请使用格式 /package.service/method 指定自定义运行状况检查方法的路径。默认为 /AWS.ALB/healthcheck

HealthCheckTimeoutSeconds

以秒为单位的时间长度,在此期间内,没有来自目标的响应意味着无法通过运行状况检查。范围为 2–120 秒。默认值为 5 秒(如果目标类型为 instanceip)和 30 秒(如果目标类型为 lambda)。

HealthCheckIntervalSeconds

各个目标的运行状况检查之间的大约时间量 (以秒为单位)。范围为 5–300 秒。默认值为 30 秒(如果目标类型为 instanceip)和 35 秒(如果目标类型为 lambda)。

HealthyThresholdCount

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

UnhealthyThresholdCount

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

Matcher

检查来自目标的成功响应时要使用的代码。这些代码在控制台中称为成功代码

如果协议版本是 HTTP/1.1 或 HTTP/2,则可能的值在 200 到 499 之间。您可以指定多个值(例如,“200,202”)或一系列值(例如,“200-299”)。默认值为 200。

如果协议版本是 gRPC,则可能的值在 0 到 99 之间。您可以指定多个值(例如,“0,1”)或一系列值(例如,“0-5”)。默认值是 12。

目标运行状况

在负载均衡器向目标发送运行状况检查请求之前,您必须将目标注册到目标组,在侦听器规则中指定其目标组,并确保已为负载均衡器启用目标的可用区。目标必须先通过初始运行状况检查,然后才能接收来自负载均衡器的请求。在目标通过初始运行状况检查后,其状态为 Healthy

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

说明

initial

负载均衡器正处于注册目标或对目标执行初始运行状况检查的过程中。

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

healthy

目标正常。

相关原因代码:无

unhealthy

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

相关原因代码:Target.ResponseCodeMismatch |Target.Timeout |Target.FailedHealthChecks |Elb.InternalError

unused

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

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

draining

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

相关原因代码:Target.DeregistrationInProgress

unavailable

对目标组禁用运行状况检查。

相关原因代码:Target.HealthCheckDisabled

运行状况检查原因代码

如果目标的状态是 Healthy 以外的任何值,则 API 将返回问题的原因代码和描述,并且控制台将显示相同的描述。以 Elb 开头的原因代码源自负载均衡器端,以 Target 开头的原因代码源自目标端。有关运行状况检查失败的可能原因的更多信息,请参阅故障排除

原因代码 说明

Elb.InitialHealthChecking

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

Elb.InternalError

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

Elb.RegistrationInProgress

目标注册正在进行中

Target.DeregistrationInProgress

目标取消注册正在进行中

Target.FailedHealthChecks

运行状况检查失败

Target.HealthCheckDisabled

运行状况检查已禁用

Target.InvalidState

目标处于停止状态

目标处于终止状态

目标处于终止或停止状态

目标处于无效状态

Target.IpUnusable

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

Target.NotInUse

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

目标处于没有为负载均衡器启用的可用区

Target.NotRegistered

目标未注册到目标组

Target.ResponseCodeMismatch

运行状况检查失败,显示以下代码:[code]

Target.Timeout

请求超时

检查目标的运行状况

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

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

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

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

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

  5. 如果状态是 Healthy 以外的任何值,则状态详细信息列将包含更多信息。有关运行状况检查失败的帮助,请参阅故障排除

要检查目标的生命值,请使用 AWS 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 (保存更改)

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

使用 modify-target-group 命令。