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

目标组的运行状况检查

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

网络负载均衡器使用主动和被动的运行状况检查,以确定目标是否可用于处理请求。默认情况下,每个负载均衡器节点仅将请求路由到其可用区中运行状况良好的目标。如果您启用跨区域负载均衡,则每个负载均衡器节点都会将请求路由到所有已启用的可用区中运行状况良好的目标。有关更多信息,请参阅 跨区域负载均衡

借助主动的运行状况检查,负载均衡器会定期向每个已注册的目标发送请求以检查其状态。每个负载均衡器节点均使用每个目标注册到的目标组的运行状况检查设置来检查该目标的运行状况。在完成每次运行状况检查后,负载均衡器节点将关闭为运行状况检查而建立的连接。

借助被动的运行状况检查,负载均衡器观察目标如何响应连接。借助被动的运行状况检查,负载均衡器能够在主动的运行状况检查报告目标运行状况不佳之前,检测出此运行状况不佳的目标。您无法禁用、配置或监视被动运行状况检查。UDP 流量不支持被动运行状况检查。

如果目标运行状况不佳,负载均衡器会针对与目标关联的客户端连接上收到的数据包发送 TCP RST。

如果目标组在已启用的可用区中没有运行状况良好的目标,我们会从 DNS 中删除相应子网的 IP 地址,以便请求无法路由到该可用区中的目标。如果在所有已启用的可用区中,所有目标同时未通过运行状况检查,则负载均衡器将在失败时开放。失败时开放的效果是允许传输到所有已启用的可用区中的所有目标的流量,而不考虑这些目标的运行状况。

对于 HTTP 或 HTTPS 运行状况检查请求,主机标头包含负载均衡器节点和侦听器端口的 IP 地址,但不包含目标和运行状况检查端口的 IP 地址。

如果您将 TLS 侦听器添加到网络负载均衡器,我们将执行侦听器连接性测试。由于 TLS 终止也会终止 TCP 连接,因此在负载均衡器和目标之间建立新的 TCP 连接。因此,您可能会看到此测试的 TCP ping 从负载均衡器发送到向 TLS 侦听器注册的目标。您可以识别这些 TCP ping,因为它们具有网络负载均衡器的源 IP 地址,并且连接不包含数据包。

对于 UDP 服务,可以对目标组执行非 UDP 运行状况检查来测试目标可用性。您可以通过任何可用的运行状况检查(TCP、HTTP 或 HTTPS)和目标上的任何端口来验证 UDP 服务的可用性。如果接收运行状况检查的服务失败,则目标会视为不可用。要提高针对 UDP 服务进行运行状况检查的准确性,如果服务不可用,请配置侦听运行状况检查端口的服务,以跟踪您的 UDP 服务的状态,并停止运行状况检查。

运行状况检查设置

可以使用以下设置为目标组中的目标配置主动的运行状况检查。如果运行状况检查超出了 UnhealthyThresholdCount 连续失败次数,则负载均衡器将使目标停止服务。如果运行状况检查超出了 HealthyThresholdCount 连续成功次数,则负载均衡器将使目标恢复服务。

设置 描述

HealthCheckProtocol

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

HealthCheckPort

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

HealthCheckPath

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

HealthCheckTimeoutSeconds

以秒为单位的时间长度,在此期间内,没有来自目标的响应意味着无法通过运行状况检查。对于 HTTP 运行状况检查,该值必须为 6 秒;对于 TCP 和 HTTPS 运行状况检查,该值必须为 10 秒。

HealthCheckIntervalSeconds

各个目标的运行状况检查之间的大约时间量 (以秒为单位)。该值可以是 10 或 30 秒。默认值为 30 秒。

重要

网络负载均衡器的运行状况检查是分布式的,使用共识机制来确定目标运行状况。因此,目标可以接收超过所配置数量的运行状况检查。要在使用 HTTP 运行状况检查时减少对目标的影响,请在目标上使用更简单的目标(例如,静态 HTML 文件)或切换到 TCP 运行状况检查。

HealthyThresholdCount

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

UnhealthyThresholdCount

将目标视为不正常之前所需的连续运行状况检查失败次数。该值必须与正常阈值计数相同。

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

目标未注册到目标组

检查目标的运行状况

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

New console

使用新控制台检查目标的运行状况

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

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

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

Old console

使用旧控制台检查目标的运行状况

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择目标组。

  4. 选择 Targets,并查看 Status 列中的每个目标的状态。如果状态是 Healthy 以外的任何值,请查看工具提示以了解更多信息。

使用 Amazon CLI 检查目标的运行状况

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

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

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

修改目标组的运行状况检查设置

您可以修改目标组的部分运行状况检查设置。如果目标组的协议是 TCP、TLS、UDP 或 TCP_UDP,则无法修改运行状况检查协议、间隔、超时或成功代码。

New console

使用新控制台修改目标组的运行状况检查设置

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

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

  5. 编辑运行状况检查设置页面上,根据需要修改设置,然后选择保存更改

Old console

使用旧控制台修改目标组的运行状况检查设置

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择目标组。

  4. 选择 Health checksEdit

  5. Edit target group 页面上,根据需要修改设置,然后选择 Save

使用 Amazon CLI 修改目标组的运行状况检查设置

使用 modify-target-group 命令。