使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何使用 Elastic Load Balancing 对无法访问我的网站的原因进行问题排查?

2 分钟阅读
0

无法访问自己的网站。如何使用 Elastic Load Balancing(ELB)来了解终端用户无法访问自己的网站的原因?

简短描述

有多种原因可能导致您无法访问自己的网站。要找到故障排除的最佳途径,请首先回答以下问题:

  • 是否无法访问该网站,且浏览器显示默认超时页面?
  • 是否间歇性发生此问题?
  • 页面是否在延迟后加载?
  • 页面是否显示了类似 HTTP 5XX 的错误?

解决方法

查找 DNS 并进行比较

确保面临此问题的域正确解析为负载均衡器节点的 IP 地址。这样可以确保客户端将连接尝试发送到正确的 IP 地址。

1.    查找 DNS:

dig <affected domain>

nslookup <affected domain>

2.    现在,对负载均衡器的 DNS 执行 DNS 查找以进行比较。例如:

dig lb-xxxxxxxxxx.us-east-1.elb.amazonaws.com

如果 IP 地址列表匹配,则表示此检查成功。如果负载均衡器处于横向扩展状态,则可能存在单个 DNS 响应无法全部显示的更多 IP 地址。在这种使用案例中,这种比较可能还不够。您可能需要运行多个 DNS 查询,才能获取列出的所有 IP。

检查后端/目标的状态

检查后端/目标运行状况检查状态。负载均衡器有配置的运行状况检查,用于检查后端/目标的状态。根据负载均衡器的类型,运行状况不佳的后端/目标可能会影响路由。根据以下类型检查负载均衡器的运行状况:

注意:

  • 启用或禁用跨区域可能会影响使用 NLB 和 CLB 的请求路由方式。
  • 您可以在流量端口以外的端口上配置运行状况检查。在这种情况下,即使目标/后端运行正常,目标也可能不会响应发送到它的流量。

如果运行状况检查显示目标运行状况不佳,则可能会在目标/后端实例处关闭此服务。或者,负载均衡器无法获得来自目标/后端实例的响应。

直接连接到负载均衡器的节点

直接连接到负载均衡器的节点。此测试会确认之前已解析 DNS 的负载均衡器的所有 IP 地址是否均可访问。此测试还会确认问题是否仅发生在特定可用区(AZ)子网上。

记下负载均衡器的 IP 地址,然后尝试连接到这些 IP 地址,每次连接一个。由于证书验证和主机标头,使用浏览器进行此测试可能无法正常工作。相反,最好使用 curl 工具以这种格式执行此检查。请注意,您必须将 <protocol><ELB IP Address><port><path><domain name> 替换为 Web 设置中的正确值。

curl -lvk <protocol>://<ELB IP Address>:<port>/<path> -H "Host: <domain name>"

例如:

Eg: curl -lvk https://3.2.1.1:443/test -H "Host: example.com"

如果您的尝试得到响应,请检查这是预期响应还是错误响应。如果响应令人满意,请检查下一个 IP 地址。

检查负载均衡器是否存在后端/目标问题

如果您确认连接到负载均衡器使用的所有 IP 地址,请确认负载均衡器与目标/后端的通信状态。

1.    首先,检查安全组、网络 ACL 和路由。

2.    如果允许访问,则登录到目标/后端。建立访问权限后,使用此命令确认 Web 服务正在侦听配置的端口。将“端口”替换为目标/后端的侦听端口。这是向负载均衡器注册目标/后端时使用的端口。

Windows:

netstat -an | findstr "LISTEN" | findstr "port"

Linux:

netstat -an | grep LISTEN | grep "port"

3.    如果在提及预期的侦听端口后未看到任何列出的内容,则表示 Web 服务出现故障。继续对服务状态进行故障排除。

4.    如果响应显示端口正在侦听,则尝试使用 curl 连接到该端口。将 <protocol> 替换为侦听应用程序服务,并将 <port> 替换为 localhost 端口:

curl -lvk <protocol>://localhost:<port>

如果您收到此命令的响应,则说明您的 Web 服务正在运行。在此测试阶段,您可以从同一 Amazon Virtual Private Cloud(Amazon VPC)中的另一个 Amazon Elastic Compute Cloud(Amazon EC2)实例启动连接。检查此连接尝试是否到达并获得来自 Web 服务的响应。此响应还会显示当您尝试连接到目标/后端时,负载均衡器收到的内容。


相关信息

如何对 EC2 实例上托管的无响应网站进行故障排除?

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