Elastic Load Balancing
Network Load Balancer
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

目标组的运行状况检查

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

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

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

如果一个或多个目标组在已启用的可用区中没有运行状况良好的目标,我们会从 DNS 中删除相应子网的 IP 地址,以便请求无法路由到该可用区中的目标。如果每个目标组中不存在具有运行状况良好的目标的已启用可用区,则请求将被路由到所有已启用可用区中的目标。

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

运行状况检查设置

可以使用以下设置为目标组中的目标配置主动的运行状况检查。负载均衡器使用指定的端口、协议和 ping 路径,每隔 HealthCheckIntervalSeconds 指定的秒数向每个已注册目标发送一次运行状况检查请求。它将在响应超时期限内等待目标响应。如果运行状况检查结果超出连续失败响应的阈值,则负载均衡器将禁用该目标。如果运行状况检查结果超出连续成功响应的阈值,则负载均衡器会将目标重新投入使用。

设置 说明

HealthCheckProtocol

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

HealthCheckPort

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

HealthCheckPath

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

HealthCheckTimeoutSeconds

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

HealthCheckIntervalSeconds

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

重要

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

HealthyThresholdCount

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

UnhealthyThresholdCount

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

Matcher

[HTTP/HTTPS 运行状况检查] 检查来自目标的成功响应时使用的 HTTP 代码。此值必须介于 200 到 399 之间。

目标运行状况

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

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

描述

initial

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

healthy

目标正常。

unhealthy

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

unused

目标未注册到目标组,负载均衡器的侦听器规则中未使用目标组,或者目标在没有为负载均衡器启用的可用区中。

draining

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

运行状况检查原因代码

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

原因代码 说明

Elb.InitialHealthChecking

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

Elb.InternalError

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

Elb.RegistrationInProgress

目标注册正在进行中

Target.DeregistrationInProgress

目标取消注册正在进行中

Target.FailedHealthChecks

运行状况检查失败

Target.InvalidState

目标处于停止状态

目标处于终止状态

目标处于终止或停止状态

目标处于无效状态

Target.NotInUse

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

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

Target.NotRegistered

目标未注册到目标组

Target.ResponseCodeMismatch

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

Target.Timeout

请求超时

检查目标的运行状况

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

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

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

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

  3. 选择目标组。

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

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

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

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

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

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

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

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

  3. 选择目标组。

  4. 选择 Health checksEdit

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

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

使用 modify-target-group 命令。