November 7, 2020

AWS 使用CloudFront创建CDN网络

作者: Jim Wang 公众号: 巴博萨船长

摘要:为了解决部分内容网络分发时高延时的问题,为了提高网页加载速度,提高内容分发速度进而给客户跟好的使用体验,会考虑到CDN网络。如何使用aws CloudFront 与 aws S3 bucket的组合,创建自己的CDN网络,会在本文中介绍相关内容。

Abstract: In order to solve the problem of high latency in the distribution of some content on the network, in order to increase the loading speed of web pages, increase the speed of content distribution, and provide customers with a better user experience, the CDN network will be considered. How to use the combination of aws CloudFront and aws S3 bucket to create your own CDN network will be introduced in this article.

作者: Jim Wang 公众号: 巴博萨船长

CDN 内容分发网络

CDN 全程:Content Delivery Network或Content Ddistribute Network,即内容分发网络。基本思想是:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

cdn原理图-西部数码知识库

基本目的为解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。

控制时延无疑是现代信息科技的重要指标,CDN的意图就是尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。

Amazon CloudFront 简介

Amazon CloudFront 是一种全球内容分发网络服务,可以安全地以低延迟和高传输速度向浏览者分发数据、视频、应用程序和 API。CloudFront 与 AWS 与多种 AWS 产品集成,如用于 DDoS 缓解的 AWS Shield、应用程序防火墙 AWS WAF、 Amazon S3、 Elastic Load Balancing、 Amazon EC2 以及 Amazon Route 53,以及可在 AWS 全球基础设施运行用户代码的 Lambda@Edge。

截止目前(2020年11月),为了以更低的延迟向最终用户提供内容,Amazon CloudFront 使用了一个包含超过 220 个节点(超过 210 个边缘站点和 12 个区域性边缘缓存)的全球网络,该网络覆盖 44 个国家/地区的 87 个城市。

Amazon CloudFront 基本运行机制

举例说明,当客户端发起对 www.customer.com 的访问时,首先需要 DNS系统解析出该域名对应的主机 IP,通过本地 ISP DNS 递归查询到 customer.com 的 DNS 域名服务器并了解到该域名是指向了 xxx.cloudfront.net,进一步解析 xxx.cloudfront.net,CloudFront 的 DNS 域名服务器会根据请求来源的 IP 等信息,返回适合当前该客户端访问的边缘节点的主机 IP 如1.1.1.1,最终该客户端向1.1.1.1发出请求。如果该边缘节点已经缓存了该客户端请求的内容(图片、视频等静态文件),则直接返回给客户端,如果未缓存,则首先回源取回该内容,并存储在边缘节点,以便下次客户端对该内容请求时可以直接返回该内容。

img

更好的 CDN 性能表现带来更多的访问流量,以及更好的用户体验,下面我们将介绍如何配置以及优化建议。

Amazon CloudFront 创建CDN网络

1. 创建分配

登陆aws,选择CloudFront服务,即可打开**[Amazon CloudFront – 入门], 然后点击创建分配按钮。目前CloudFront支持的内容分发方式为Web和RTMP,但根据最新的公告信息(2020年10月),CloudFront 在 2020 年 12 月 31 日停止支持 RTMP 分配。**本文示例中,选用Web分发方式。

2. 创建分配-源设置

配置页面中,需要配置的第一部分内容为源设置。所需设置内容如下,需要注意的是,根据分发源的类型不同,该部分的所需设置项也不同,本文中选用的Amazon S3作为分发源,所需配置内容为下图左半部分。

image-20201107182108663

2. 创建分配-默认缓存行为设置

缓存行为让您为您网站上文件的特定 URL 路径模式配置各种 CloudFront 功能。例如,一个缓存行为可能适用于用作 CloudFront 源服务器的 Web 服务器上的 images 目录中的所有 .jpg 文件。您可为每个缓存行为配置的功能包括:

image-20201107184032233

3. 创建分配-分配设置

该部分主要为了设置分配的价格级别和CloudFront使用备用域名时所需要完成的配置选项。本文简单介绍部分配置。有关备用域名时相关设置会在另一篇文章中介绍。

image-20201109015314326

选用默认配置项即可完成CloudFront的基本配置,有关,如何使用备用域名和开启CORS的内容会在其他文章中介绍。文章部分选项在自己的项目中有用到,会被详细介绍。还有部分选项没有使用到,就使用官方文档中的描述。总的来说使用aws的CloudFront完成CDN网络的搭建比自己单独建设相关网络要简便的多。由于目前还在免费使用周期,也就没有费用上的对比。aws 相关服务也是刚刚开始接触,文中定有不足之处,也希望经验丰富的朋友多多指教,感兴趣的朋友可以关注我的个人公众号一起来讨论学习。


关于本文

由 Barbossa Wang 撰写, 采用 CC BY-NC 4.0 许可协议.

#AWS#CloudFront