不知道大家对阿里云CDN产品有没有大概的了解,当我们使用 CDN 加速站点访问后,客户端的请求将首先发送到 CDN 的 L1 节点,再通过 L1 > L2 > 源站的网络路径回源获取资源。因此如果访问过程中出现问题,那么这各个环节都有可能出现问题。那么如何尽快定位问题出现在哪儿,并快速准确地解决问题就成为难点,今天阿里云湖北授权服务中心捷讯技术跟大家分享下如何定位访问异常的节点,以及如何解决的一个大概思路。
1、域名配置和解析
当某个站点的资源 URL 访问出现异常时首先需要查看的是对应的域名是否有正确配置解析到 CDN 上。如图 1 所示即是 CDN 加速域名的基本配置截图,从图中我们可以查看到该加速域名对应的 CNAME 域名、源站设置等设置。这里需要特别注意的是:
源站设置的地址或者端口是否正确。 CDN 作为访问链路中间的 Proxy ,真实的数据在没有缓存的情况下是仍然需要回源获取访问数据的,因此用户需要保证 CDN 节点通过源站设置和回源 Host 设置可以正确的获取得到资源内容。
下图是CDN 域名配置示意图
1.1 源站设置和回源 Host 的区别。
源站设置用户是可以选择域名和 IP 的。不管是设置为域名还是 IP ,CDN 都会将其解析到 IP 。因此域名解析的 IP 与直接填写IP两种设置是没有区别的。而当该 IP 对应的服务器上配置了多个站点的话就需要根据回源 Host 来决定,回源 Host 是指 CDN在回源的请求时会带有 Host 字段,而字段带的是真实需要访问源站上对应的站点(也就是对应的服务器上对应站点的 server_name)。
1.2用户源站是否支持 CDN 回源到 443 端口或者开启协议跟随回源。
当 CDN 的源站端口设置为 443 或者开启协议跟随回源功能时是需要源站配置证书并提供 https 证书的。因此如果源站不支持 https 的话是需要我们自己设置源站端口为 80 并且不要开启协议跟随功能。
1.3 DNS 解析是否正确解析到 CNAME 域名上。
CDN 加速域名要生效是需要解析能够正确的解析到 CDN 的 CNAME 域名上,如果DNS解析没有解析或者解析的 CNAME 域名没有正确对应就会产生异常的。例如上图 1中提供的例子在图 2 中的主机记录需要填写 ali-cdn ,而记录值则填写完整的 CNAME 域名(ali-cdn.xxxxx.com.w.alikunlun.com),
下图是CDN 域名解析示意图
2、CDN 到源站异常
在确定 CDN 解析配置正确后仍然访问异常那么就需要按照 CDN 的访问链路来逐项排查。首先我们需要确定的即是访问异常的情况是全局现象还是局部现象,如果是全局情况的话一般问题出现在 CDN 本身的设置以及源站的设置上。可以按照如下的逻辑逐条排查:
2.1 请首先核对是仅有 HTTPS 访问出现问题还是 HTTP 和 HTTPS 出现问题。
如果仅是 HTTPS 出现问题一般是 CDN HTTPS 的配置问题,大家可以尝试着去解决下,如果大家还是不会的话,就期待小编的下一次分享呦!
2.2在 HTTP 和 HTTPS 都出现问题时我们需要首先查看 CDN 的源站是否正常。
用户可以通过绑定 host 测试源站的响应情况。由于 CDN 仅是中间的代理服务器,当 CDN 没有缓存需要回源时就会回到源站访问,因此源站访问正常是 CDN 可以访问的条件。对于 windows 系统可以通过 C:WindowsSystem32driversetchosts 文件配置 host 绑定,而 mac 和 linux 系统则都可以通过 /etc/hosts 文件进行修改。如果这时测试访问异常就需要用户首先排查源站的原因,如果源站响应正常就继续往下面看吧。
2.3请查看 CDN 的域名状态是否在沙箱节点中,可以通过 CDN 控制台上的状态查看到当前域名是否有在沙箱节点。
由于 CDN 是不抗任何的 CC 或者DDoS 攻击的,而您的该域名 XXXXX 由于历史受到攻击,所以被切沙箱节点,沙箱节点是不能保证服务的稳定性的,且一旦域名切入沙箱节点不支持切出。建议如果是希望进行安全防护的话可以考虑使用云盾相关的产品进行安全防护,具体的架构可以参考:高防IP、CDN与WAF的架构设计。如果不是沙箱节点,那就再继续。
2.4. 请核对 CDN 返回的状态码是否是 503 。
一般 503 是由于源站做了安全控制导致的,请查看下源站的安全防护功能(例如防火墙、安全狗等软件),建议可以临时关闭源站的安全防护措施后测试是否恢复。CDN 现在 L2 节点的 IP 段暂时需要通过白名单开放,当前仅支持日峰值带宽为 1Gbps 以上的用户申请。
请核对 CDN 返回的状态码是否是 504,504 错误一般为 CDN 回源到源站超时导致的。CDN 回源有严格的超时时间(四层 TCP 是 10 秒,七层HTTP / HTTPS是 30 秒),当超过该时间时即使后续源站响应正常也是会返回 504 的。因此建议使用 CDN 的站点都做动静分离改造,因为部分动态资源可能出现 30 秒仍然无法响应的。
请核对 CDN 返回的状态码是否是 403 。首先需要核对源站响应是否为403,如果是的话则排查源站的配置,如果是源站正常但是 CDN 访问出现 403 的话主要是由于 CDN 的安全控制导致的,CDN 提供的安全控制功能包括 IP 黑名单、Referer 防盗链以及鉴权功能。
请核对 CDN 返回的状态码是否是 404 。在保证源站正常时一般是由于CDN 的源站地址和回源 Host 的设置导致回源无法获取资源内容因此报了 404 的错误。
3、客户端到 CDN L1 网络异常
由于 CDN 仅是缩短客户端到源站的运营商网络链路,但是仍然无法避免需要从客户端访问到 CDN L1 节点中间通过运营商网络访问。因此客户端访问异常仍然是可能受该段链路的波动所影响。建议遇到此类问题可以先收集以下信息:
1)具体访问异常的 URL;
2)访问 CDN 的节点 IP,您可以通过 ping 加速域名得到;
3)客户端访问的报错信息,请包括 general、request、response 头信息,您可以通过浏览器中的审查元素中的 network 标签页中查看到;
4)客户端访问 https://cdn.dns-detect.alicdn.com/https/doc.html 的结果;
5)客户端 ping / mtr 的测试结果。
获取上述信息后可以按照如下的思路进行排查:
可以根据上述第四条中获取得到的客户端的 local dns 和 ip 是否是属于同一地域的同一运营商的,因为 CDN 的节点调度是根据 local dns 进行调度的,如果客户配置的 local dns 与本地实际的客户端运营商不相匹配就会导致 CDN 调度的节点异常导致链路出现问题的。建议使用 CDN 的客户端可以使用自动获取的 dns 服务器。
如果确认 local dns 和 IP 设置正确 。请查看上述第二条中的信息是否与客户端local dns 对应的运营商匹配,另外地理位置较为接近,如果不接近的话建议可以通过工单反馈给售后工程师进行处理。
如果确认没问题,那我们继续查看上述第五条中的信息核对客户端到 CDN 该节点访问是否存在丢包的情况,并且可以 mtr 的测试结果查看到具体丢包的节点,如果这段运营商链路出现丢包的话建议可以联系当地的运营商沟通该丢包情况。另外根据 CDN 的调度原理可以临时修改客户端的 local dns 为一些公共的 DNS 服务器(可以考虑修改为 223.5.5.5 或者 223.6.6.6 ),使用别的 CDN 节点以及其对应的链路临时恢复业务。
讲了这么多,终于分享完了。相信大家有的人看得有点复杂,但是一步步的去操作,问题就能解决了。今天就分享这里了,如果大家还有什么疑问,或者有其他的想要了解的,可以在线咨询我们的客服,或者拨打我们的全国热线电话027-87498031
武汉捷讯信息技术有限公司是一家专门从事互联网服务、软件开发、计算机和通信系统集成及电信增值业务的高科技互联网企业,官方授权唯一指定阿里云湖北授权服务中心、阿里云区域服务提供商,请各位有需求的客户,认准官网。