阿里云CDN搬站第二期 运维及管理

CDN通过在现有网络中增加一层新的cache节点,将源站的内容发布到最接近用户的网络节点,使得客户端在请求时直接访问命中该资源,减少回源情况,提高网站访问速度,因此很多业务都需要使用CDN进行分发。因此本文就CDN的及优化策略提供思路,便于将业务切到CDN上来
1、了解阿里CDN
阿里最初也是租用第三方 CDN,结果存在功能欠缺及不稳定等诸多问题,整个系统的 规模、性能、可用性和可管理性都不符合阿里的需求,为了满足更大规模的并发需求,阿里CDN也由此应运而生。
目前阿里CDN的简单架构如下图,CDN节点可分为L1节点和L2节点,L1节点分布在全国各省市,L2节点分布在几个大区:
阿里云CDN搬站第二期 运维及管理

1.客户端在请求一个域名时,会先向本地的localdns查询域名对应的IP地址,localdns再向权威DNS进行查询,由阿里CDN进行调度,给出此localdns对应分配的节点。
2.客户端向节点发起建连,当L1节点有缓存则会HIT,直接将数据吐给客户端。当无资源缓存时,会向L2节点进行请求对应的资源,同理L2有缓存则直接返回,无缓存就会回客户源站取资源,并按照配置的缓存策略进行缓存。
了解CDN的架构、调度以及缓存逻辑,是业务稳定的第一步,而如何实现CDN的分发,并提高CDN的缓存命中就是一个很关键的需求。

2、命中率优化:

  1. 预热功能是指将URL提前上传到CDN的L2节点上,再次访问时无需从源站获取资源,因此预热可以减少回源,保证访问效果。预热的前提是配置了域名缓存,只有配置了对应的缓存规则,按照业务需要配置缓存后测试是否生效,可以通过curl命令测试,查看文件是否有HIT:
    阿里云CDN搬站第二期 运维及管理

预热方法可参考:
https://help.aliyun.com/document_detail/121122.html
对于文件量大的情况,可以调用接口进行预热,注意预热是有队列限制的,队列为100,如果调用过快会报错,这也是避免大量文件进行回源打垮源站
https://help.aliyun.com/document_detail/91161.html
若有在其他厂商使用CDN,可以导出近期URL访问top列表,在阿里CDN控制台进行预热,然后再进行切量。

刷新则是当源站有文件更新时,需要调用刷新,将节点上缓存的旧文件进行刷新。刷新后CDN节点的缓存内容将会被强制过期。当您向CDN节点请求资源时,CDN会直接回源站拉取对应的资源返回给您,并将其缓存。
刷新方法可参考:
https://help.aliyun.com/document_detail/121122.html
对于源站是oss的情况,可以在OSS上配置文件自动刷新,不用人工去管理
阿里云CDN搬站第二期 运维及管理

  1. 去参数缓存
    阿里CDN是根据URL完整匹配进行缓存的,即对于带参数的请求,如http://www.abc.com?123,默认是不会和http://www.abc.com使用同一个缓存的。因此对于URL中带参数和不带参数其实是一个文件的业务,可以开启去参数缓存,将参数去除,改为同一个缓存,提高文件命中率:

https://help.aliyun.com/document_detail/27128.html

  1. 开启gzip压缩

        GZIP压缩可以减少传输内容大小,当CDN开启GZIP压缩后,客户端请求带上Accept-Encoding:gzip头时,CDN会响应GZIP的资源:

    https://help.aliyun.com/document_detail/27127.html

通过curl测试同样也能看到是否生效:
阿里云CDN搬站第二期 运维及管理

3、CDN防盗链/URL鉴权

盗链常见于某些网站直接将其他网站的资源放到自己页面上,骗取最终用户的浏览和点击率,而真正的服务网站却得不到任何的收益。因此我们可以开启防盗链,将referer来源禁用,或者只允许某一页面来源请求:

https://help.aliyun.com/document_detail/27134.html
测试可发现防盗链已生效:
阿里云CDN搬站第二期 运维及管理

同时辅以URL鉴权,保护站点的内容资源不被非法站点下载盗用

https://help.aliyun.com/document_detail/85117.html

4、RAM授权:
针对不同场景可以配置不同的授权策略,比如针对只想允许子账号拥有只读以及刷新预热权限,可以使用如下策略,如有需要其他策略,可以按照ram授权策略自行授权:
https://help.aliyun.com/document_detail/27154.html
{
"Version": "1",
"Statement": [
{
"Action": [
"cdn:Describe*",
"cdn:PushObjectCache",
"cdn:RefreshObjectCaches"
],
"Resource": "*",
"Effect": "Allow"
}
]
}

5、云监控告警:

目前CDN有对接云监控,可以关注域名的指标变化看业务是否有异常,建议针对5xx状态码、下行流量等进行监控,如有变化时第一时间提醒消息接收人,避免业务影响进一步扩大

https://help.aliyun.com/document_detail/113988.html

6、日志分析

用户访问出现异常时,可以先通过CDN控制台的监控初步判断是否有异常,当看错误率没有明显变化时,可以下载CDN日志进行判断,当时用户的访问是否有异常。
目前CDN常见有两种日志
1. 历史日志:历史日志目前延时在4小时左右,可以用于分析历史问题,梳理用户异常。日志字段可参考:

https://help.aliyun.com/document_detail/27142.html
阿里云CDN搬站第二期 运维及管理

2. 实时日志:实时日志延时时间短,当出现问题时,可以马上查看日志情况,且日志结合了sls日志服务,可以快速统计需要的数据,比如客户端访问top10、状态码分布top情况等。也建议开通实时日志,便于问题排查

https://help.aliyun.com/document_detail/91314.html
阿里云CDN搬站第二期 运维及管理

上一篇:python列表解析和生成表达式浅要说明


下一篇:数学之美:图论和网络爬虫