如何对 Application Load Balancer 的 503(服务不可用)错误进行问题排查?

2 分钟阅读
0

我在使用 Application Load Balancer(ALB)时收到 HTTP 503(服务不可用)错误。如何解决此错误?

简短描述

要确定 Application Load Balancer 是否正在生成 503 错误,请执行以下操作之一:

  • 访问您的 CloudWatch 指标并找到一个标有 HTTPCode_ELB_503_Count 的指标。
  • 运行这个 CURL 命令。如果响应包含“503 服务暂时不可用”,则错误来自 Application Load Balancer。
    请务必将 MY_URL 替换为用于访问 Application Load Balancer 的 URL:
$ curl -IkL MY_URL
  • 检查您的 Application Load Balancer 访问日志。确认日志中有 elb_status_code = 503。 如果您在上述任何位置看到 503 错误,则该错误是由 Application Load Balancer 生成的。使用以下问题排查步骤以解决该错误。

解决方法

验证目标组是否已注册目标

使用 EC2 控制台进行验证

  1. 访问 Amazon EC2 控制台
  2. 在导航窗格中,选择 Load Balancing(负载均衡)下的 Target Groups(目标组)。
  3. 选择目标组的名称以打开其详细信息页面。
  4. 选择 Targets(目标)选项卡。
  5. 检查是否列出了目标。如果它们被列出,则它们已注册。

使用 AWS CLI 进行验证

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

要使用 AWS CLI 验证目标,请使用 describe-target-health 命令。

注册目标

如果您没有看到任何已注册的目标,请通过控制台AWS CLI 注册它们。

验证目标组是否与 Auto Scaling 组相关联(如果您正在使用 Auto Scaling)

如果目标组属于 Auto Scaling 组,请确认两者正确关联。如果不是,请附加组。

使用 EC2 控制台进行验证

  1. 打开 Amazon EC2 控制台
  2. 在导航窗格的 Auto Scaling 下,选择 Auto Scaling Groups(Auto Scaling 组)。
  3. 选择要验证的 Auto Scaling 组。
  4. Load balancing(负载均衡)下,确认 Application Load Balancer 的目标组与 Auto Scaling 组相关联。

使用 AWS CLI 进行验证

运行 describe-auto-scaling 命令。请务必将 MY-ASG 替换为您的 Auto Scaling 组的名称。将 AWS-REGION 替换为您特定的 AWS 区域。

$ aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name MY-ASG --region AWS-REGION

在命令输出中,确认目标组列在 TargetGroupARNs 下。

附加目标组

如果目标组未附加到 Auto Scaling 组,请通过控制台CLI 关联这些组。

检查目标运行状况

确认目标已注册后,请确认它们处于正常运行状态。有关更多信息,请参阅 如何排查和修复失败的 Application Load Balancer 运行状况检查?


相关信息

DeregisterTargets

AttachLoadBalancerTargetGroups

AWS 官方
AWS 官方已更新 2 年前