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群协同工作。

7. CDN 示例
商业化的CDN网络是用于服务性质的,高可用性等要求非常高,有专业产品和CDN网络解决方案,本文主要从理论角度,理解CDN的实现过程,并利用已有网络环境和开源软件做实际配置,更深刻理解CDN的具体工作过程。

Linux 是开放源代码的免费操作系统,已经成功应用于许多关键领域。Bind是Unix/FreeBSD/Linux等类unix平台上非常有名DNS服务程序,Internet上超过60%的DNS运行的是bind。Bind的最新版本是9.x,用的比较多的是8.x,bind 9有很多新特性,其中一项是根据用户端源地址对同一域名解析不同的IP地址,有了这种特性,能把用户对同一域名的访问,引导到不同地域节点的服务器上去访问。Squid是Linux等操作系统上有名的Cache引擎,与商业Cache引擎相比,Squid的性能比较低,基本功能工作原理与商业Cache产品是一致的,作为试验,是非常容易配置运行起来。以下简要介绍CDN的配置流程。

1、要加入CDN服务的网站,需要域名(如www.linuxaid.com.cn,地址202.99.11.120)解析权提供给CDN运营商,Linuxaid的域名解析记录只要把www主机的A记录改为CNAME并指向cache.cdn.com即可。cache.cdn.com是CDN网络自定义的缓存服务器的标识。在/var/named/linuxaid.com.cn域名解析记录中,由:

www             IN      A       202.99.11.120

改为

www             IN      CNAME   cache.cdn.com.


2、CDN运营商得到域名解析权以后,得到域名的CNAME记录,指向CDN网络属下缓存服务器的域名,如cache.cdn.com,CDN网络的全局负载均衡DNS,需要把CNAME记录根据策略解析出IP地址,一般是给出就近访问的Cache地址。

Bind 9的基本功能可以根据不同的源IP地址段解析对应的IP,实现根据地域就近访问的负载均衡,一般可以通过Bind 9的sortlist选项实现根据用户端IP地址返回最近的节点IP地址,具体的过程为:

1)为cache.cdn.com设置多个A记录,/var/named/cdn.com 的内容如下:

$TTL 3600

@       IN      SOA             ns.cdn.com.     root.ns.cdn.com. (

2002090201      ;Serial num

10800           ;Refresh after 3 hours

3600            ;Retry

604800          ;Expire

1800            ;Time to live

)

IN      NS              ns

www     IN      A               210.33.21.168

ns      IN      A               202.96.128.68

cache   IN      A               202.93.22.13    ;有多少个CACHE地址

cache   IN      A               210.21.30.90    ;就有多少个CACHE的A记录

cache   IN      A               211.99.13.47


  2) /etc/named.conf中的内容为:

options {

directory "/var/named";

sortlist {

#这一段表示当在本地执行查询时

#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址

{ localhost;

{ localnets;

202.93.22.13;

{ 210.21.30.90; 211.99.13.47; };

};

};

#这一段表示当在202/8地址段进行DNS查询时

#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址

{ 202/8;

{ 202.93.22.13;

{ 210.21.30.90; 211.99.13.47; };

};

};

#这一段表示当在211/8地址段进行DNS查询时

#将按照211.99.13.47,202.93.22.13,210.21.30.90的顺序返回地址,

#也就是211.99.13.47是最靠近查询地点的节点

{ 211/8;

{ 211.99.13.47;

{ 202.93.22.13; 210.21.30.90; };

};

};

{ 61/8;

{ 202.93.22.13;

{ 210.21.30.90; 211.99.13.47; };

};

};

};

};



zone "." {

type hint;

file "root.cache";

};



zone "localhost" {

type master;

file "localhost";

};



zone "cdn.com" {

type master;

file "cdn.com";

};


3、Cache在CDN网络中如果工作在服务器加速模式,因为配置里已经写明加速服务器的url,所以Cache直接匹配用户请求,到源服务器获得内容并缓存供下次使用;如果Cache工作在客户端加速模式,Cache需要知道源服务器的IP地址,所以CDN网络维护和运行一个供Cache使用的DNS服务器,解析域名的真实IP地址,如202.99.11.120 ,各域名的解析记录与未加入CDN网络之前一样。


4、工作在CDN网络中缓存服务器必须工作在透明方式,对于Squid来说,需要设置以下参数:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

 

 

嗯,明天到公司确认一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值