如何排查 Route 53 运行状况检查不正常问题?

上次更新时间:2020 年 6 月 17 日

我创建的 Amazon Route 53 运行状况检查被报告为不正常。如何排查并解决该问题?

解决方法

首先,您必须通过 AWS 管理控制台确定最近一次运行状况检查失败的原因。或者,您可以使用 AWS 命令行界面 (AWS CLI) 中的 get-health-check-last-failure-reason 命令。在您确定运行状况检查的类型以后,完成对应的问题排查步骤以找出并解决该问题。

注意:无论是哪种运行状况检查类型,确保检查 "Invert health check status" 选项的状态。若此选项被设置为 "true",则当运行状况检查程序将运行状况检查标记为正常时,Route 53 会视运行状况检查为不正常,反之亦然。

排查监控终端节点的运行状况检查问题

原因:此问题会显示 "The health checker could not establish a connection within the timeout limit." 错误消息。此错误由运行状况检查程序尝试与配置的终端节点建立连接时的超时导致。根据运行状况检查协议(TCP、HTTP 或 HTTPS),建立连接的最短时间各不相同:

  • 对于 TCP 运行状况检查,运行状况检查程序和终端节点之间的 TCP 连接必须在十秒内建立。
  • 对于 HTTP 和 HTTPS 运行状况检查,运行状况检查程序和终端节点之间的 TCP 连接必须在四秒内建立。在建立连接以后,终端节点必须在两秒内以 2xx 或 3xx HTTP 状态代码进行响应。如需更多信息,见 Amazon Route 53 如何确定运行状况检查是否运行良好

步骤:

1.    在运行状况检查配置中,记下终端节点的“域名”或“IP 地址”。

2.    访问终端节点。确认防火墙或服务器允许从 Route 53 公有 IP 地址为运行状况检查配置中启用的区域建立连接。见 IP 范围并搜索 "service": "ROUTE53_HEALTHCHECKS"。若该终端节点资源位于 AWS 上,配置安全组和网络访问控制列表 (NACL) 以允许 Route 53 运行状况检查程序的 IP 地址。

3.    使用以下工具来测试通过 Internet 与配置终端节点的连接。确保以您的对应值取代命令中的占位符。

TCP 测试:

$ telnet <domain name / IP address> <port>

HTTP/HTTPS 测试:

$ 

curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" <http/https>://<

domain-name/ip address>:<port>/<path>

 -so /dev/null 

对前面的输出和运行状况检查的超时值进行比较。然后,确认您的应用程序在对应的时间内做出响应。

4.    若已启用,使用运行状况检查配置中的“延迟”图形来检查“TCP 连接时间”、“到第一个字节的时间”以及“完成 SSL 握手的时间”的指标图形。 如需更多信息,见监控运行状况检查程序与终端节点之间的延迟

注意:如果未启用“延迟”图形,您将无法编辑现有运行状况检查。相反,您必须创建一个新的运行状况检查

排查具有字符串匹配条件的运行状况检查问题

原因:此问题会在终端节点服务器返回 "200 OK",但 Route 53 将运行状况检查标记为不正常时发生。运行状况检查程序必须在四秒内与终端节点建立 TCP 连接。运行状况检查程序必须在接下来的两秒内收到 HTTP 状态代码 2xx 或 3xx。然后,在接下来的两秒内,配置的字符串必须显示于首个 5120 字节的响应正文当中。如果在首个 5120 字节中未出现该字符串,Route 53 会把运行状况检查标记为不正常。

步骤:

要验证字符串是否完全显示在首个 5120 字节的响应正文当中,请使用以下命令。确保以实际字符串替换 “$search-string”。

$ curl -sL <http/https>://<domain-name>:<port> | head -c 5120 | grep $search-string   

排查监控 CloudWatch 警报的运行状况检查问题

原因:Route 53 不会等待 Amazon CloudWatch 警报即进入 ALARM 状态,因为它要监控指标数据流而不是 CloudWatch 警报的状态。

步骤:

1.    验证处于 "INSUFFICIENT DATA" 状态的运行状况检查的配置。若指标数据流提供的信息不足以确定警报的状态,那么运行状况检查状态将取决于 "InsufficientDataHealthStatus" 配置。"InsufficientDataHealthStatus" 设置的状态选项有 "healthy"、"unhealthy" 或 "last known status"。

2.    如果您已更新 CloudWatch 警报的配置,则新的设置不会自动出现在关联的运行状况检查之中。在 Route 53 控制台中,选择运行状况检查。选择运行状况检查,然后选择同步配置。此操作会在运行状况检查配置和已更新的 CloudWatch 警报的配置之间进行同步。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?