OpenStack CDNaaS - Poppy介绍

本文详细介绍了CDN的基本概念、工作原理及CDN在云环境下的优化策略。接着,文章聚焦OpenStack组件Poppy,阐述了Poppy作为CDN服务的功能,如统一CDN RESTful API、多CDN提供商支持、Cassandra和Zookeeper的集成等。Poppy通过ManagerDriver、ProviderDriver等模块实现服务管理,并依赖于Cassandra和Zookeeper进行数据存储和进程间通信。此外,文章还涵盖了Cassandra和Zookeeper的安装,以及Poppy的安装和架构分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: 赵怡


一、CDN简介

在介绍Openstack poppy组件前先介绍一下CDN。

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

 

CDN的技术原理

1. 传统访问方式

在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:

 

  由上图可见,用户访问未使用CDN缓存网站的过程为:

  1) 用户向浏览器提供要访问的域名;并把域名解析请求发往本地DNS服务器

  2) 本地DNS服务器将请求发往网站DNS服务器, 返回给本地DNS服务器源站点实际IP

  3) 本地DNS服务器将该IP地址返回给用户

  4) 用户直接访问源站点, 取回请求数据

  通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。

 

2.CDN访问方式

       CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,下面让我们看看访问使用CDN缓存后的网站的过程:

 

  通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

  1) 用户向浏览器提供要访问的域名,域名解析请求被发往本地DNS服务器

  2) 本地DNS服务器将请求发往网站DNS服务器, 由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,请求被指向CDN网络中的全球负载均衡集群。

  3) 本地DNS服务器将请求发往全球负载均衡器, 该集群对域名进行智能解析, 将响应速度最快的CDN边缘集群IP返回给本地DNS服务器。(比如 根据地理位置信息解析对应的IP地址,使得用户能就近访问。)

  4) 本地DNS服务器将该IP地址进行本地缓存并返回给用户;

  5) 用户向该CDN边缘集群发出访问请求

  6) CDN边缘集群收到访问请求后, 如果是第一次访问, 那么CDN边缘集群会向源站点取得数据, 并返回给用户, 并缓存

       7) 如果CDN边缘集群有缓存, 且未过期, 则直接把数据返回给用户

 

传统和CDN访问方式对ICP和CDN运营商的影响分析

       通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访问),又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,下面是CDN网络实现的具体操作过程。

  1) 作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。

  2) 作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;

  3) 当需要进行sortlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;

  4) 由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;

  5) 在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,而哪些又不进行缓存,以免发生开放代理的情况。

 

CDN的网络系统架构

       CDN网络架构主要由两大部分,分为中心边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。

  当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。

  对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而响应时间必然更快。

  每个CDN节点由两部分组成:负载均衡设备高速缓存服务器

  负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。

  高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。

  CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中总的流量和各节点的流量,并保存在系统的数据库中,使网管人员能够方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。

  理论上,最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,即可运行。DNS支持根据用户源IP地址解析不同的IP,实现就近访问。为了保证高可用性等,需要监视各节点的流量、健康状况等。一个节点的单台Cache承载数量不够时,才需要多台Cache,多台Cache同时工作,才需要负载均衡器,使Cache群协同工作。

 

可用CDN商业服务

 

名称

链接

1

Amazon CloudFront

https://aws.amazon.com/tw/cloudfront/

2

Microsoft Ajax CDN

https://www.asp.net/ajax/cdn

3

Google Cloud CDN

https://cloud.google.com/cdn/

4

CloudFlare

https://www.cloudflare.com/cdn/

5

Akamai CDN

https://www.akamai.com/us/en/cdn/

6

Edgecast

https://www.verizondigitalmedia.com

7

fastly

https://www.fastly.com/

8

ChinaCache CDN

http://en.chinacache.com/products/mobile-cdn

9

maxcdn

https://www.maxcdn.com/open-source/

 

可用CDN开源软件

 

名称

链接

1

Nginx

https://www.nginx.com/

2

varnish

https://varnish-cache.org/

2

LuManager

http://www.zijidelu.org/

3

Fikker CDN

http://www.fikker.com/

 

对传统CDN在云环境下可作如下自动化和优化

1. CDN边缘节点在访问流量突然增加的情况下, 不易动态调节资源。可以和云计算的弹性伸缩相结合来解决, 做到动态调整资源配置, 扩大节点处理能力, 缓解系统压力。

2. 传统CDN使用的专用存储设备比较昂贵, 不易扩展, 兼容性较差。云存储系统的规模扩展非常便捷,在系统容量不能满足存储需求时,只需在新增加的服务节点上部署分布式存储中间件并进行必要的网络配置,即可快速地将该节点纳入原有存储集群管理体系中。云存储技术非常适合于大文件的读取密集型访问,这也正是CDN的主要应用场景。

3. 对CDN日志可以进行更加高效地统计分析, 数据挖掘, 捕捉用户行为特征和发现用户目标需求,从而进行有针对性的内容管理和资源调度。通过和云计算大数据集成, 能够基于计算集群的分布式计算模型能够针对海量大规模非结构化数据提供高性能的并行处理能力,从而更好地改善CDN的智能型。
4. 传统的CDN针对用户的不同终端和不同环境下地访问缺乏智能性。 结合云计算+SDN, 融合CDN可具有在任意时间、任意地点以及任意终端上看到任意内容的技术特点,以及统一性与智能性的特点,能实现业务内容在不同网络、按照不同既定策略向多种终端的快速分发,能够实现热门内容自动存储到融合CDN各云端的节点,而无需增加额外的承载网设备,大大降低了CDN服务商的建网成本,提高了投资收益率。例如高清视频业务向移动终端播放时,CDN网络需根据终端的类型、网络带宽等因素,自动调整视频类业务的分发策略,选择适合手机屏幕的编码格式,并采用预先设定好的手机视频Qos策略,使用户快速获得业务内容,降低承载网的流量压力,从而保证用户的业务体验。同时还能动态适配用户和网络情况,对视频内容进行识别,实现智能管控,从而适时添加针对性的增值业务和广告,保证用户的业务体验。 

5. CDN可通过和云计算的安全组件进行集成, 来做更好的CDN网络安全检查和防护

6. 集成多个CDN厂商的服务, 并动态调整使用哪个厂商的服务。由于各CDN厂商接口都不一样, 比较难统一接口。

7. 增加访问控制, 如什么地域的人, 什么网站可以访问该CDN资源。

  

下面介绍一下CDN服务如何和云计算环境OpenStack进行集成, 来解决上述问题。

 

二、poppy简介

Poppy(罂粟花, PoP代表Point ofPresence即CDN入网点/边缘节点, Py即Python)是op

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值