CloudFront 配置与分析:开篇
作为云产品开发,玩好云产品、理解云产品的底层逻辑,也是重要功课之一。
本系列对 Amazon CloudFront 产品做一下基础配置体验与使用分析。
太长不看
- CloudFront 是什么
- CDN 原理与解决的问题
- CloudFront 基础配置流程
- tcpdump 抓包与分析
- 结语
01/CloudFront 是什么
这里摘录一段亚马逊云科技官网的说明。CloudFront 是一项网络服务,它可以加快向用户分发静态和动态网页内容的速度,例如 html、css、js、image 文件。它通过一个遍布全球的数据中心网络(称为边缘节点)来传递您的内容。
当用户请求您通过 CloudFront 提供的内容时,请求会被路由到提供最低延迟(时间延迟)的边缘节点,以便以最佳性能交付内容。
CloudFront 直译过来是 “云前端”,它是一个 CDN 产品。
02/CDN 原理与解决的问题
原理
关于 CDN 原理,下述有一张比较形象的图用于解释(外部引用)
从上述流程图可知:
- 用户发起请求:用户向 http://www.test.com/1.jpg 请求资源。
- DNS 解析:浏览器向 DNS 服务器发起域名解析,域名解析发现配置 CNAME 到 CDN 的调度域名,DNS 递归查询到 CDN 调度系统。
- 调度决策:调度服务会将最佳接入节点(边缘节点)IP 返回。
- 缓存判断:浏览器向 IP 发起请 1.jpg 访问请求,此时进入 CDN 接入节点,接入节点会检查其缓存是否有用户请求内容。
- 缓存命中:如果内容存在于缓存中,接入节点直接将内容返回给用户。
- 缓存未命中:如果内容不在缓存中,接入节点向源服务器发起请求,获取内容(其中可能会经过多层中间源节点,这里涉及请求收敛策略,进一步降低源站压力)。
- 缓存并传输内容:接入节点将从源服务器获取的内容存储在缓存中,并将内容传输给用户。
- 浏览器渲染:用户设备接收到内容,浏览器开始渲染页面。
解决的问题
概要的说,CDN 服务是为了降低服务提供方成本(资源成本、运营成本),提高用户体验。
因为其能通过大量就近接入节点,提供快速请求响应和资源缓存,并提供访问控制、边缘计算、安全等增值能力。
费用案例:
以 100G 流量为例月消费,优惠后大约为 96.89 人民币,这通常比带宽费用要实惠,且比非 CDN 方案投入去运营服务器和带宽人工、技术成本要低,只需做一些配置接入即可。
03/CloudFront 基础配置流程
创建分配
源站配置
缓存配置
函数、WAF、备用域名等(都按默认不配置)
配置完毕后,分配了一个域名 d37z7ecg72nt7t.cloudfront.net(本篇直接使用该域名,后续篇章再配置自定义域名)
04/tcpdump 抓包与分析
登录源站 sg.lukachen.work 所在服务器,抓包并写入 test.pcap 文件(把网卡出入的包全抓了,用 wireshark 再做过滤重组。注意!抓包会消耗大量 CPU 和硬盘资源,如果在现网服务器,需在负载低峰或经过较为合理的过滤参数与评估决策后执行)
tcpdump -i eth0 -w test.pcap
本地浏览器访问资源(也可以用 curl),发现响应 404,翻车了。。。排查原因
curl https://d37z7ecg72nt7t.cloudfront.net/1.txt
登录服务器,终止抓包,并将抓包文件发送到本地 wireshark 分析
sz test.pcap -y
wireshark 包定位,1.txt 关键字过滤并使用 Follow TCP Stream 进行 TCP 包重组
重组后可看到,请求头,通过分析根因是请求头中的 Host,我服务器并没有配
去配置上,重载 nginx 配置
再请求,通啦!
重复上述抓包动作,再看一下相关头部信息
05/结语
好了,上述就是本次开篇的内容,并涉猎了 tcpdump 服务端抓包与 wireshark 重组分析。
CDN 是现代互联网基础设施的重要组成部分,尤其对于需要全球分发内容的大型网站和服务来说,CDN 是提高性能和用户满意度的关键技术。
在本章中,我们已经探讨了亚马逊云科技 CloudFront 基本概念、工作原理和基础配置。
在接后续章节中,我们将更深入了解 CloudFront 每个配置项的用法和抓包分析,进一步探讨如何针对不同的业务需求进行优化,并通过测试案例展示。
PS
打赏: 微信
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
还是 cloudflare 简单,还免费。(≧∇≦)ノ
哈哈,哪个划算用哪个(手动狗头)