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

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

目标组的运行状况检查

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

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

借助被动的运行状况检查,负载均衡器观察目标如何响应连接。借助被动的运行状况检查,负载均衡器能够在主动的运行状况检查报告目标运行状况不佳之前,检测出此运行状况不佳的目标。您无法禁用、配置或监视被动运行状况检查。UDP 流量不支持被动运行状况检查,且开启了粘性目标群体。有关更多信息,请参阅粘性会话

如果目标运行不正常,除非运行不正常的目标触发了负载均衡器故障断开,否则负载均衡器会为关联到目标的客户端连接上收到的数据包发送 TCP RST。

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

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

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

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

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

运行状况检查设置

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

设置 描述 默认

HealthCheckProtocol

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

TCP

HealthCheckPort

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

每个目标用来从负载均衡器接收流量的端口。

HealthCheckPath

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

/

HealthCheckTimeoutSeconds

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

HTTP 运行状况检查需要 6 秒,TCP 和 HTTPS 运行状况检查需要 10 秒。

HealthCheckIntervalSeconds

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

重要

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

30 秒

HealthyThresholdCount

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

5

UnhealthyThresholdCount

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

2

Matcher

[HTTP/HTTPS 运行状况检查] 检查来自目标的成功响应时使用的 HTTP 代码。范围为 200 至 599。默认值为 200-399。

200-399

目标运行状况

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

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

说明

initial

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

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

healthy

目标正常。

相关原因代码:无

unhealthy

目标未响应运行状况检查、运行状况检查失败或目标处于停止状态。

相关原因代码:Target.FailedHealthChecks

draining

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

相关原因代码:Target.DeregistrationInProgress

unhealthy.draining

目标未对运行状况检查做出响应或未通过运行状况检查并进入宽限期。目标支持现有连接,并且在此宽限期内不接受任何新连接。

相关原因代码:Target.FailedHealthChecks

unavailable

目标运行状况不可用。

相关原因代码:Elb.InternalError

unused

目标未在目标组中注册,目标组未在监听器规则中使用,或者目标位于未启用的可用区中。

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

运行状况检查原因代码

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

原因代码 说明

Elb.InitialHealthChecking

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

Elb.InternalError

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

Elb.RegistrationInProgress

目标注册正在进行中

Target.DeregistrationInProgress

目标取消注册正在进行中

Target.FailedHealthChecks

运行状况检查失败

Target.InvalidState

目标处于停止状态

目标处于终止状态

目标处于终止或停止状态

目标处于无效状态

Target.IpUnusable

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

Target.NotInUse

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

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

Target.NotRegistered

目标未注册到目标组

检查目标的运行状况

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

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

  2. 在导航窗格中的 Load Balancing (负载均衡) 下,选择 Target Groups (目标组)。

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

  4. Details(详细信息)窗格显示目标总数,以及每种运行状况的目标数。

  5. Targets(目标)选项卡上,Health status(运行状况)列指示每个目标的状态。

  6. 如果目标状态是 Healthy 以外的任何值,则 Health status(运行状况)列中将包含更多信息。

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

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

  3. 选择目标组。

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

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

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

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

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

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

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

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

  2. 在导航窗格中的 Load Balancing (负载均衡) 下,选择 Target Groups (目标组)。

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

  4. Health checks 选项卡上,选择 Edit

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

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

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

  3. 选择目标组。

  4. 选择 Health checks (运行状况检查)Edit (编辑)

  5. Edit target group (编辑目标组) 页面上,根据需要修改设置,然后选择 Save (保存)

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

使用 modify-target-group 命令。