俗话说磨刀不误砍柴工,通过了解理论基础,在脑中形成一个基本的知识轮廓,排查问题才能游刃有余。通过以下问题引出今天的话题:
1.什么是 CDN?
2.CDN 的加速原理是怎么样的?
3.什么场景适合用 CDN?
4.CDN 解决什么问题?
1.1 什么是CDN?
内容分发网络(Content Delivery Network,CDN),是在现有 Internet 中增加的一层新的网络架构,由遍布全球的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储业务内容,当用户向某业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。
1.2 CDN的加速原理是什么样的?
假设业务加速域名为 www.test.com,域名接入 CDN 开始使用加速服务后,当用户发起 HTTP 请求时,实际的处理流程如下图所示:
详细说明如下:
1.用户向 www.test.com 下的某图片资源(如:1.jpg)发起请求,会先向 Local DNS 发起域名解析请求。
2.当 Local DNS 解析 www.test.com 时,会发现已经配置了 CNAME www.test.com.cdn.dnsv1.com,解析请求会发送至 DNS(GSLB),GSLB 调度体系,会为请求分配最佳节点 IP。
3.Local DNS 获取 Tencent DNS 返回的解析 IP。
4.用户获取解析 IP。
5.用户向获取的 IP 发起对资源 1.jpg 的访问请求。
6.若该 IP 对应的节点缓存有 1.jpg,则会将数据直接返回给用户(10),此时请求结束。若该节点未缓存 1.jpg,则节点会向业务源站发起对 1.jpg 的请求(6、7、8),获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点(9),并返回给用户(10),此时请求结束。
1.3 什么是场景适合用CDN?
网站加速
门户网站、电商、UGC 社区等业务场景,CDN 提供了强大的静态内容(如网页样式、图片、小文件)加速分发处理能力,显著提升了网页用户的体验。
下载加速
游戏安装包获取、手机 ROM 升级、应用程序包下载等业务场景,CDN 提供稳定、优质的下载加速。海量弹性带宽储备,具备突发性超大流量承载能力,可以让业务用户获得极速的下载体验。
音视频加速
在线音视频播放业务场景,CDN 能提供稳定、流畅、丰富的观看体验。
1.4 CDN解决什么问题?
1.解决网络带宽较小,用户访问资源慢。使用CDN降低带宽成本,提升用户访问体验;
2.用户访问量大,服务器硬盘读写压力大。使用CDN降低服务器成本;
3.自建数据中心分布地域较少,离访问用户物理距离远,用户访问网络传输时间长。使用CDN通过就近算法,快速响应请求,提升用户访问体验。
了解了理论基础,引出今天的话题。
2.1 为什么接入CDN无法访问呢?
经过对加速原理的了解,接入 CDN 的请求,首先要经过 DNS 解析出距离用户距离最近的节点 IP,然后发起请求到 CDN 节点,判断节点上是否有缓存资源,若没有再回源站,整体是这么一个流程。
所以出现接入 CDN 无法访问的情况,就在上述的环节中去排查。从大类上看,主要分为源站异常和 CDN异常。
源站异常
若源站异常,无法对外提供服务或源站设置了安全策略,如开了防火墙限制来源 IP。
CDN异常
◎CDN CNAME 配置异常
CDN 网站加速,需对要加速的域名配置 CNAME 解析。未正确配置,导致无法访问。
◎CDN 加速配置异常
缓存配置异常、回源配置异常、访问控制配置异常。
◎CDN 节点异常
CDN 节点故障,无法对用户请求做出响应或者响应错误。
2.2 针对上述情况有什么排查方法?
确认是否源站异常
假设业务加速域名为 www.test.com,源站域名为 www.origin.com,加速域名和源站访问方式为 HTTP。加速域名 URL http://www.test.com/1.jpg 替换为 http://www.origin.com/1.jpg 若源站 URL 无法正常访问,说明源站异常。
CDN异常排查思路
以下排查思路均以腾讯云 CDN 为例。
1.CDN CNAME 配置排查
添加一个新的加速域名,去域名服务商配置 DNS 解析。如下图需在 lukachen.com 域名解析上,配置配置一条 cdn.lukachen.com 的 CNAME 记录到cdn.lukachen.com.cdn.dnsv1.com。
使用 MAC 终端,可通过 dig 命令可确认域名的 DNS 解析情况,如下图已正确配置 CNAME 解析,其中配置 CNAME 这一动作,在 CDN 的术语称为:切量。
2.CDN加速配置排查
01.缓存配置异常
排查缓存配置如 .php;.asp;.aspx;.jsp; 等后缀,这些动态资源是不能用静态加速的,如果是动态的资源,如 .php 结尾的 url,却开启了.php 后缀缓存,就有可能造成网站打不开的情况。
02.回源配置异常
如源站仅支持 HTTP 访问,若在 CDN 回源配置成 HTTPS 则会导致访问异常。
03.访问控制配置异常
检查 CDN 配置,是否配置访问控制。若配置了访问控制,则需要满足对应的访问策略。
3.CDN节点异常排查
浏览器访问加速域名 URL 获取加速节点的 IP。
通过节点查询工具,判断加速节点服务状态。
使用自助诊断工具排查
用腾讯云 CDN 接入域名,还可以通过自助诊断工具,协助完成异常诊断。
工具地址:
https://console.cloud.tencent.com/cdn/diagnose
使用方法:
确认加速域名访问资源 url,如 http://cdn.lukachen.com/touxiang.png 生成诊断链接。
访问链接,稍等片刻完成诊断。
稍后即可在诊断报告中,查看诊断情况。
报告中显示多次未命中缓存,返回域名配置查看,即可根据实际情况配置缓存。
最佳实践
不同资源(动态、静态)分别使用独立的访问域名,这样可以针对不同资源配置不同加速类型,实现收益最大化。
以上就是今天的故事。从理论基础到排查思路,看完后相信大家对于为什么要用 CDN、怎么用 CDN、使用 CDN 出现问题怎么排查,有了一个比较完整的认识。