CDN产品之新业务接入切换实践-阿里云(云淘科技)

使用场景

本实践主要用于在使用CDN产品后进行业务测试并计划进行切换上线的阶段,主要目标是帮忙用户能够清晰地了解业务上线前的准备和切换过程中的注意事项。

目标用户

计划接入阿里云CDN业务的用户和需要新增业务切换的用户。

方案优势

  • 整合测试方案,通过阅读本实践可以快速熟悉上线前的测试方法。
  • 沉淀常用切换方案,明确切换过程的细节和预案,做好预期管理。

实施介绍

当用户已经完成业务域名新增、功能配置后,即将进入测试验收和切换环节。

如何进行业务测试

了解CDN整体访问请求过程

  • 当终端用户向www.aliyundoc.com下的指定资源发起请求时,首先向Local DNS(本地DNS)发起请求域名www.aliyundoc.com对应的IP。
  • Local DNS检查缓存中是否有www.aliyundoc.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyundoc.com的解析记录。
  • 当网站授权DNS解析www.aliyundoc.com后,返回域名的CNAME www.aliyundoc.com.example.com
  • Local DNS向阿里云CDN的DNS调度系统请求域名www.aliyundoc.com.example.com的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址。
  • Local DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址。
  • Local DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址。
  • 用户向最佳节点IP地址发起对该资源的访问请求。
    • 如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户(步骤8),此时请求结束。
    • 如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获
    • 源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户(步骤8),此时请求结束。
  • 获取CDN服务IP测试

    在测试环节我们推荐通过绑定CDN服务的IP进行host测试。可以通过解析域名的CNAME地址获取CDN的服务IP,CNAME地址获取可以查看域名配置-基本配置中的基础信息获取。通过ping对应域名CNAME地址获取服务IP通过阿里运维工具解析CNAME地址获取更多的服务IP可以通过https://zijian.aliyun.com/detect/dns工具输入域名的CNAME即可本机host测试方法详见 https://help.aliyun.com/document_detail/208994.html

    确认是否访问到CDN

    查询节点对访问建联的IP进行查询,是否为阿里CDN的IP,可以通过控制台工具和相关API进行查询。控制台详见 https://help.aliyun.com/document_detail/35192.htmlAPI接口详见 https://help.aliyun.com/document_detail/146385.html通过返回头部方法一:以下为阿里CDN返回的头部信息,具备一定的辨识度,可通过以下响应头的存在与否,来判断是否在阿里CDN加速。如Ali-Swift-Global-Savetime、X-Swift-SaveTime、X-Swift-CacheTime、EagleId。方法二:可以在阿里侧自定义一个响应头部,确定是否访问来自阿里,例如 From:aliCDN,可在自定义HTTP响应头配置,详见 https://help.aliyun.com/document_detail/27137.html

    异常访问状态码判断

    对于访问到的4xx和5xx状态码,可以通过头部信息(X-Swift-Error)来查看是否来自源站的返回,常见的返回内容包括X-Swift-Error: orig response 4XX error 和 X-Swift-Error: orig response 5XX error

    缓存命中判断

    如何来判断请求是否命中CDN的缓存,我们以下面的请求为例,可以通过via等头部来进行综合判断。

    • Via:记录请求的CDN路由,正常链路为 用户》CDN L1》CDN L2》源站。通过H/M来判断缓存及缓存位置,H/M分别代表已缓存、未缓存。如上图表示 L1已缓存,L2未缓存。(L1或者L2只要任一是H,则表示该请求由CDN缓存,不会回源)
    • X-Cache:记录该文件是否已被缓存及缓存位置,HIT/MISS,分别代表已缓存、未缓存。
    • Age:CDN节点已缓存时间,以秒为单位。如果值是200,那么就代表该资源已经在cdn缓存了200s。
    • X-Swift-SaveTime: CDN节点上的开始缓存时间,即该文件是在什么时间点被缓存到CDN节点上的
    • X-Swift-CacheTime :CDN节点上的允许缓存时间,以秒为单位。比如3600意思是缓存1小时,超过了这个时间,该缓存就丢弃了,需要重新回源获取。

    其他需要注意点

    Content-Type:源站资源需要定义完整Content-Type来控制访问预期,如果源站资源

    如何进行业务切换

    切换前准备

    报警监控准备业务切换前建议您通过阿里云监控进行CDN的相关监控报警配置,报警配置方式详见 https://help.aliyun.com/document_detail/113988.htm?spm=a2c4g.11186623.0.0.1dec4a9bPZEtVJ#task-261642阿里云提供了丰富的监控指标,包括边缘和回源侧的带宽、4xx状态码、5xx状态码等,更多的监控项详见 https://help.aliyun.com/document_detail/162873.htm?spm=a2c4g.11186623.0.0.1aa33fe4AgO5Qw#concept-2482416文件进行预热阿里云CDN支持文件预热,提供了控制台和API两种方式:控制台详见 https://help.aliyun.com/document_detail/27140.html#section-81a-rm1-sis和对应的API详见 预热源站内容到缓存节点 – CDN – 阿里云注意:切换前一定要确保进行了缓存规则配置,相关文件能正常缓存到CDN并且缓存时间足够长,否则预热的意异常情况预案(1)回源高:业务切换前进行文件预热,部分文件分批预热到边缘;正常切换都在业务低峰期,回源流量较大有如下两种情况,缓存命中率差,那么回源流量会增大,一般缓存命中率建议在90%及以上,缓存命中率高,当CDN总流量基数大时,回源流量相对来说也会增大,属于正常情况。(2)CNAME未正常解析:检查配置的CNAME解析的记录值和CDN控制台获取的CNAME地址是否一致,不一致会导致解析失败;完成CNAME配置后,运营商DNS的TTL还未更新,一般TTL时间为10分钟,实际以配置域名解析时选择的TTL为准;完成CNAME配置后,CDN服务会全网检查加速域名是否解析到CDN,如果有个别地区没有解析也会显示感叹号,需要全网解析生效后才会显示正常;您配置域名解析时设置了解析路线,让部分地区不走CDN加速;(3)服务不可用:先进行cname回切,待明确问题后再进行一步,避免业务受损;

    切换中方案

    配置CNAMECDN业务的切换通过域名解析指向即可完成,当域名解析到阿里云对应的CNAME地址后,请求就会经过解析访问到CDN的IP。市面有不少可以支持配置CNAME平台,常见的平台可参考https://help.aliyun.com/document_detail/27144.html切换建议细化切换粒度:可以按照区域运营商粒度、终端等各种粒度进行业务切换;切换时间选择:尽量错开业务峰,选择低峰期;切换效果查看域名CNAME解析效果:通过 https://zijian.aliyun.com/detect/dns进行域名的DNS解析测试,看整体解析生效情况。查看域名单URL请求效果:通过 https://zijian.aliyun.com/detect/http针对单条URL进行解析

    切换后运维

    运营报表通过CDN的数据分析功能,形成周期的定制报表供您分析汇报使用。业务监控CDN针对业务提供全方位的监控工具,可以设置并接收相关报警信息。运维工具CDN提供即时测试工具,可以自行拨测或提供给终端用户使用。更多详细运维实践请查看 https://help.aliyun.com/document_detail/446571.html#d7e89

    常见问题

    业务测试使用中的问题欢迎搜索 https://help.aliyun.com/document_detail/147730.html

    发表评论