如何自己架设部署CDN?

转自:https://www.zhihu.com/question/21771529

作者:视界云
链接:https://www.zhihu.com/question/21771529/answer/190036779
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关于企业是否需要部署自己的CDN,这个需要结合最优的性价比、自身的需求和业务规模以及自身的能力等综合因素来衡量,市场上也有众多的优异的CDN可供选择!

如果企业需要自建CDN参考下面一些简单资料:


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)作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。
2)作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;
3)当需要进行sorlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;
4)由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;
5)在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,而哪些又不进行缓存,以免发生开放代理的情况。

9 ​添加评论
​分享
​收藏 ​感谢 收起
13 人赞同了该回答
不到一定的规模,不建议自建CDN。成本和性能都比不上使用专业的CDN服务。
当然,自己搭着玩就另说了:
可用BIND做DNS解析。
可用纯真IP数据库。
可用LVS做4层负载均衡。
可用Nginx,Varnish,Squid,Apache TrafficServer做7层负载均衡和cache。
13 ​添加评论
​分享
​收藏 ​感谢
如果要自建CDN的话,你需要再每个节点,部署一定量的服务器,购买运营商的带宽,还有其他和CDN相关的系统和软件,例如负载均衡等。另外你得有强大的管理后台(这个很难管理),另外一般做CDN的话,节点最好都是在20多个点左右,如果你只建立4个点,其中1到2个点DOWN,会给其他2个点,带来很大负载,如果流量过高的话,你这样的CDN网络就没有太多存在的意义。
0 ​1 条评论
​分享
​收藏 ​感谢
2 人赞同了该回答
有一篇文章叫做《简单CDN》, 可以搭建一个简单的CDN网络,当然目前一般建不如租,假如自己有带宽服务器资源可以考虑和CDN服务商交换流量
《互联网运营智慧》第7章“简单cdn”正式版下载
简单cdn - sery
2 ​添加评论
​分享
​收藏 ​感谢
3 人赞同了该回答

jingchunzhang/56vfs · GitHub

包括文件分发,分发信息管理,分发信息查询,还缺gslb(重点是ip库准确)
3 ​添加评论
​分享
​收藏 ​感谢
1 人赞同了该回答

因为没有备案,服务器在国外的话 访问比较慢,国内CND 又不让用,所以自己搭建1-2个节点来解决问题

1 ​4 条评论
​分享
​收藏 ​感谢

不到一定规模真不建议自建CDN。不说别的,单单一个CDN调度系统的实现和维护想想都够头大了

0 ​添加评论
​分享
​收藏 ​感谢
免费的CDN有很多啊,为什么要自己部署?

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值