天翼云 CDN 最佳实践
CDN 的最佳搭配是对象存储。视频点播、apk 等文件下载分发建议使用对象存储,把文件放在对象存储上,将对象存储作为 CDN 的源站。如果是纯静态网站,甚至可以把整个网站全部放在对象存储上。
CDN 可以起到隐藏源站 IP 的作用,防止源站 IP 遭到 DDOS 攻击。源站在负载均衡、下一代防火墙或者直接在云主机上对 CDN 节点配置白名单,其它地址访问将被拒绝。
天翼云 CDN 已支持将 CDN 和云 WAF 相结合,变身为 SCDN 即安全加速,同时拥有 CDN 加速、Web 网站防护和抗 DDOS 功能。
使用 CDN 建议对业务进行调整,将动态和静态请求进行分离,让动态和静态请求切分到不同的域名。对静态请求接入 CDN 静态加速,对动态请求可根据需要接入全站加速或云 WAF,如果源站有安全防护也可以动态请求直接回源站。
接入 CDN 后源站基于日志统计的访客访问统计将不再准确,可以在 CDN 控制台对访问进行分析统计,如访客省份、运营商、流量、请求数等等信息。
CDN 缓存规则可以针对文件扩展名、指定目录、或者特定的访问链接。缓存时间要根据业务需求配置,对经常变更的文件缓存时间不要设得太长,不经常变更的文件缓存时间可以设长一些。缓存时间主要影响 CDN 回源站的流量。
如果源站对文件进行了更新而缓存没有过期,则访客收到的仍然是老文件,可以在 CDN 控制台进行强制刷新,刷新后缓存立即失效,访客将访问到新文件。可以对全站全部刷新,也可以只对指定的目录、指定的链接进行刷新。不建议全站刷新,全站刷新将造成回源流量短时间内增长。
对于视频点播等大文件,建议提前在 CDN 控制台上进行预热分发,把文件提前推送到 CDN 的中心节点,防止突发访问时产生大量回源请求,对源站造成压力。
可以在 CDN 控制台对命中率进行分析,如果命中率低,就说明有很多文件没有被 CDN 缓存,需要对热门回源链接进行分析,调整缓存策略。
可以在 CDN 控制台查看回源热门链接,如果回源链接是静态请求且请求量较大,说明该链接的文件没有被缓存或者缓存时间过短,需要对缓存配置进行优化。
可以在 CDN 控制台对 http 状态码及对应状态码的请求链接进行分析,重点检查 4xx 及 5xx 错误。如果 404 错误高,就说明网页中有死链且还有很多人访问,需要找到对应的链接进行解决。如果 500 及 502 错误高,说明 Web 服务器有内部错误或业务逻辑错误,需要结合 Web 服务器的日志进行排查。如果 504 错误高,说明有很耗时的应用超时了,需要调整 CDN 回源超时时间,或者是源站有丢包,需要对源站的网络质量进行检查。但要记住,这些错误不可能完全消除。如果访问到一个错误的链接或者有网络扫描,也会触发 403 或 404 错误。5xx 错误不可能完全消除,只能尽量减少 5xx 错误,把 5xx 错误控制在业务正常运行范围以内。
如果通过 CDN 访问出现 5xx 错误或无法访问,可以通过修改电脑的 hosts 文件,将域名解析指向源站进行对比测试。如果确认问题在 CDN 且短时间内无法恢复,可以通过修改 DNS 指向源站,绕过 CDN 直接回源站。
新业务接入 CDN 在进行域名配置后,同样可以通过修改电脑 hosts 文件,将域名解析指向 CDN 节点进行测试。如果测试业务完全正常,则可以修改 DNS,将 CNAME 记录指向 CDN 使业务切换到 CDN。
新业务修改域名解析接入 CDN 后,可以通过站长之家 ping 检测 https://ping.chinaz.com/ 类似的服务进行检测,检查域名解析是否全网生效。
当前用户访问到的 CDN 节点可以通过在命令行下 ping 域名,或者在浏览器的开发者模式中查看。出现个别地方无法访问,在报故障时需要报告访问到的 CDN 节点,便于故障排查。
CDN 调度是根据 DNS 请求判断访客的所在地,会尽量采用当地的 CDN 资源进行覆盖,比如 CDN 会尽量让湖南长沙电信用户会访问到湖南长沙的电信 CDN 节点,移动用户访问到湖南长沙的移动 CDN 节点。如果 ping 域名发现节点被调度到外省,甚至是其它运营商,说明 DNS 可能不是使用当地运营商 DNS,可以检查自己的 DNS 设置。可以通过 http://nstool.netease.com 这个小工具检测,看看自己的 DNS 被递归到哪儿。
需要在各运营商的 DNS 逐步支持 edns-client-subnet 协议后,CDN 调度中心能通过 DNS 请求获取访客的真实 IP,做到更精确的调度,也就不再有湖南用户被调度到山东的问题。
114.114.114.114 这个 DNS 服务不是中国电信向公众提供的 DNS 服务,请尽量使用当地运营商提供的 DNS 服务。
CDN 默认的策略是不对问号后面的参数进行缓存,则 CDN 把http://www.aaa.com/aaa.jpg 和 http://www.aaa.com/aaa.jpg?t=1644998252 当成两个相同的文件。不管后面的参数如何变化,实际文件还是同一份,则需要在缓存策略中开启去问号进行缓存,减少回源量。否则每个请求都要回源站去取。
如果某种类型的文件设置了缓存策略,但该类型文件的某些文件不需要缓存,需要确保每次访问到的都是最新版本,则需要关闭去问号缓存,同时在源站网页的静态链接后面带上一个参数,常见的是带上?
t=1644998252 类似的参数,参数一般取当前的时间戳。这样每次访客刷新时由于时间戳变更了,浏览器不会缓存,CDN 上也不会缓存,保证每次取的文件都是来自于源站的最新文件。
版权声明: 本文为 InfoQ 作者【天翼云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/ff5b6562ec159b2d6cfaf0a2c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论