【CDN 常见问题】CDN 接入配置及常见问题-阿里云开发者社区

 知识中心     |      2020-04-02 00:00:00

作者:烨烁

CDN 顺利接入线上系统的域名是每个客户头疼的问题,本文档通过详述 CDN 接入配置各步骤配置以及每部设置常遇到的疑惑点进行解惑,让客户可以将顺利迁移至 CDN 提供加速服务。

产品文档参考:CDN开通产品文档

一、配置流程及概念详解

在正常开通 CDN 服务后即可进入控制台使用,按照产品文档流程,我们可以依次执行“添加加速域名”->“配置 CNAME 解析”两个步骤进行接入。下面我们就依次详述两个过程。

在点击“添加域名”按钮后控制台将进入详细加速域名的配置页面,如图1所示。其中包括多项影响 CDN 使用情况的配置项,因此这些设置对于后续的 CDN 使用至关重要。下面我们队每项配置详细说明。
image.png

图 1. CDN 配置加速域名示意图

1)加速域名:表示该域名即为 CDN 的加速域名,也就是说真正在业务系统中提供给线上客户使用的域名,后续所有需要 CDN 加速访问的资源即通过该域名对外提供服务。而不能使用一个“假想域名”配置。同时这里支持泛域名加速,如果用户有多个子域名源站为统一服务器 IP 希望能够同时设置时可以配置类似于 *.aliyun.com 的域名,这样即可对 aliyun.com 下的所有的二级域名提供加速服务。更多泛域名注意事项请参考:CDN泛域名注意事项
“假想域名”。常有客户真正提供服务的域名是 www.aliyun.com,但是在这里添加的加速域名却是 cdn.aliyun.com ,那么后续业务系统中继续使用 www.aliyun.com 域名将不会起到 CDN 加速效果。
泛域名范围。泛域名是有严格的范围限定的。举例来说,当配置加速域名为 .aliyun.com 时,该加速域名对应的是 aliyun.com 主域名下的所有二级域名。因此即该域名既不能给 aliyun.com 主域名提供服务,也不能给类似于 test2.test1.aliyun.com 这样的三级域名提供服务的。因此使用域名与该加速域名不相匹配是需要在创建对应的加速域名的。例如 aliyun.com 只可以设置主域名为加速域名,而test2.test1.aliyun.com 可以使用 .test1.aliyun.com 。

2)业务类型 。现在CDN提供图片小文件、大文件下载、视音频点播、直播流媒体、移动加速和全站加速几种业务类型。业务类型一经设置将无法修改。用户可以根据自己的主要加速的资源和业务场景选择合适的业务类型。很多用户对自己需要选择的业务类型产生疑虑,这里对几种业务类型的区别做详细描述。
首先 全站加速 即为动态加速,正常CDN主要通过缓存机制加速静态资源的GET请求,而对于动态请求CDN是不做加速的,这就导致对于动态站点或者大量POST请求的站点无法使用CDN,而全站加速即是针对于这类站点提供服务,其通过最优链路算法及协议层优化动态请求回源链路,实现快速回源获取最新数据。
直播流媒体 表示该域名用来做直播业务,其接受rtmp协议的推流到视频中心,并提供过rtmp、flv和hls几种协议分别提供在线播放的功能,该业务类型除了常规CDN支持的http协议外还支持rtmp直播流协议。
移动加速 是CDN推出的针对于移动应用的动静态全网加速产品,其也可以同时实现动静资源加速,相比于全站加速来讲本业务类型主要应用于Android或者IOS的APP上,并且其需要对APP做一定的改造以集成移动加速的SDK。
剩下的三种业务类型( 图片小文件、大文件下载、视音频点播 )是很多客户困惑的点。这三种业务类型均是针对于静态资源的GET请求加速,这三种业务类型均可以对所有的静态文件实现加速功能(并不是图片小文件业务类型仅加速图片,其同样可以加速大文件或者视频;同时图片小文件以及大文件下载也可以使用视音频的拖拽播放功能),并且其缓存规则也是完全一致的;这三种业务类型主要CDN针对于不同类型的文件做了不同的TCP协议栈的优化策略。因此用户结合自己的业务场景的资源进行选择即可。如果主要资源为图片文件、样式文件、js文件等可以使用图片小文件类型、如果主要资源是apk包、程序安装文件等可以选择大文件下载类型,而如果主要资源是视频资源提供在线点播播放的话则可以使用视音频点播类型。

3)源站类型和源站地址 :表示CDN回源到源站服务器的类型及其地址。现在支持IP、源站域名、OSS源站、直播中心服务器几种类型。下面我们详细对几种类型进行详细描述。
IP,顾名思义即是源站服务器的IP。这里特别需要注意的是CDN的源站不管是在阿里云上的ECS、SLB等服务、其他的云服务提供商的服务还是IDC机房的物理机,其回源都是走的公网链路回源的。因此这里填写的IP必须是公网IP,否则将导致CDN回源出现5XX的错误。同时这里是可以设置源站为IP的,并且可以根据该IP对应服务器能够承载的压力设置其优先级。关于多源优先级的说明请参考多源优先级设置。这里需要特别注意的一点是当CDN设置为多源时,用户是需要自行保证每台服务器上对应的资源均是完整并且同步的。常有客户误解这里的多源表示我在主服务器上查找某资源发现不存在返回404的错误,然后CDN会自动去备服务器上查找该资源,CDN是不会进行该操作的。只要某一条服务器四层健康检查通过返回任何的状态码(2XX、3XX、4XX或者5XX)都会直接返回给客户端的。
域名,表示解析在源站服务器上的域名。其在CDN上的作用是会将该域名解析为IP,然后按照与上述的IP回源一致到该服务器上获取资源。因此域名其实与IP基本类似,设置为域名的场景主要是用户的源站服务器IP经常会发生变动,而为了避免源站服务器IP变动导致CDN回源异常可以这里设置为域名,这样用户仅需要保证该域名可以正常解析即可,并不需要再修改CDN的配置。另外这里的域名仅仅是用来解析成IP的,源站服务器上如果有多个站点需要哪个站点提供服务并不是根据该设置决定的,而是根据回源host设置决定的。
OSS域名,CDN加速OSS是常见的使用场景,其使用方法及常见问题请参考【 CDN 最佳实践】CDN 加速 OSS 常见问题及处理思路。如果需要回源到本账号中的OSS可以这里直接选择对应bucket的公网域名即可。但是如果需要回源到其他账号的bucket中的话是需要设置源站类型为域名,然后自行填写该bucket的公网域名。同时请注意OSS域名类型是不支持多源设置的。
最后一种直播中心服务器是当选择直播流媒体业务类型系统自动配置的,并不需要用户自己配置。
L1和L2节点网络。CDN的节点是分两层架构的(CDN架构请参考CDN基础架构),其中L1是靠近客户端的,会根据客户端的local dns分配就近的同一运营商的节点,因此L1节点是区分具体运营商的,而L2是靠近源站服务器端的节点,为了保证CDN回源不会受到网络隔离导致回源异常,因此CDN的L2的节点均是BGP网络类型的,用户上述配置的源站服务器是不需要担心自己的服务器是单线服务器导致CDN回源异常的。
健康检查。在将服务器IP加在CDN上后,CDN是会定期做健康检查,主要包括四层的网络监察,因此用户的源站服务器日志可能会记录到CDN的健康检查的日志的。当设置为多源回源时当某台服务器健康检查失败即暂时不会回源到该服务器,而选择其他的服务器回源,避免由于源站单台服务器异常导致线上异常。

4)端口 :表示CDN回源时与源站的哪个端口获取数据。CDN支持的回源端口包括80和443,分别对应HTTP协议和HTTPS协议。这里如果设置为443端口时用户是需要保证源站服务器对应端口的server是配置好SSL证书的。

5)加速区域 :对于L3以上的客户是可以选择CDN的海外加速的,客户是可以根据自己的服务对象选择对应的CDN的加速区域,现在可以选择中国大陆、全球加速和港澳台及海外三种类型。如果这里选择的是中国大陆,那么该域名的调度节点是仅有中国大陆内的L1和L2节点。那么这个时候海外的客户也是会调度到大陆的节点,其访问就有可能受国际链路波动影响导致访问异常的。

二、配置CNAME解析

在配置完成CDN加速域名后用户即可得到对应的CNAME域名,如图2所示即是对应的CNAME域名。用户接下来即可配置加速域名对应的CNAME解析后即可。
image.png

图 2. CDN CNAME域名示意图

详细的CNAME解析设置请参考CDN域名CNAME解析设置,这里需要特别注意的是主机记录必须与CDN添加的加速域名一致(泛域名需满足统一级别)。
DNS解析限制同一个主机记录只能够保留一个A记录或者CNAME记录,否则添加将会导致冲突。因此想要添加CDN是需要删除之前解析到源站服务器的A记录并添加对应的CNAME记录,等TTL时间后才可以生效的。
为了保证切换CDN后不影响业务,建议先通过绑定hosts的方式先本地测试添加CDN后正常再正式修改DNS记录。不同系统有不同绑定hosts的方法(例如Mac、linux系统中可以使用/etc/hosts文件设置)。具体设置方法步骤为:

  • ping CDN提供的CNAME地址得到CDN节点的IP,如图3所示。
    image.png

图 3. CDN 节点IP获取示意图

  • 修改/etc/hosts文件将该域名设置解析到该IP上,如图4所示。
    image.png

图 4. 绑定hosts配置示意图

  • 然后就可以在浏览器中实际访问测试是否正常。

三、验证CDN生效情况

在配置完成dns解析后可以通过多种方法验证CDN是否生效。包括以下三种方法:

  • 通过ping你所添加的加速域名,如果被转向.kunlun*.com的域名,即表示CDN功能已生效,如图5所示。
    image.png

图 5. 通过ping验证解析生效示意图

  • 通过 nslookup或dig命令,可以查看相应的加速域名访问CDN节点的IP和延时丢包等基本信息。用户可以根据解析出来的IP在CDN的控制台上的IP检测工具查看是否为CDN节点的IP,是的话就说明CDN已生效:
    image.png

图 6. CDN检查IP是否为CDN节点IP示意图

  • 用户也可以获取对应加速域名的资源的response头查看是否有CDN加速对应的节点信息来判断CDN是否生效,如图7所示,如果response头中包括Via、X-Cache等头就表明其已经CDN加速。
    image.png

图 7. CDN查看response头示意图