Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552916
  • 博文数量: 81
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-25 09:08
个人简介

www.cloud86.cn

文章分类

全部博文(81)

文章存档

2017年(2)

2014年(1)

2011年(1)

2007年(5)

2006年(31)

2005年(41)

我的朋友

分类: 网络与安全

2017-02-05 22:52:57

简易版CDN技术实现


一、边缘系统

nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,所以选择Nginx作为CDN边缘前端是不错的选择,这样更好实现对单个网站并发、流量进行限制,Nginx 1.9.5 以后的版本对HTTP2完美支持。

边缘的安全防护可以选择硬件WAF和软件防火墙,因为我不是销售,硬件WAF大家可以去问度娘就知道了,软件防火墙比较有名的是ModSecurity,再就是代码级别的ngx_lua_waf是由淘宝开发的nginx第三方模块。刚才开始我们选择ModSecurity,因为在网上的评价都是很高的,性能高,规则全,但是太复杂,而Nginx lua布署和规则更新都非常简捷,使用lua语言极大增强了nginx的能力,nginx以高并发而知名,lua脚本轻便,两者的搭配堪称完美。可以轻松实现如下功能:

防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击,

防止svn/备份之类文件泄漏,

防止ApacheBench之类压力测试工具的攻击,

u 屏蔽常见的扫描黑客工具,扫描器,屏蔽异常的网络请求,

屏蔽图片附件类目录php执行权限,

防止webshell上传

缓存中间件可选择的比较多,squid、varnish、nginx cacheATS等等,nginx Cache是为了提供访问最频繁资源的缓存而已,适合缓存少量页面资源,主业是提供Web 服务与代理的作用,若是Cache内容过多容易造成性能瓶颈与负载过大,varnish是纯内存缓存服务器方案ATS,之前淘宝用过一段时间,后来没有再使用, Squid也没有那么差劲,至少我们还在使用,nginx+squid结合的方式使用。

二、映射系统

映射系统主要负责二个任务,首先将客户端定向到最佳的边缘服务器,其次是告诉代理服务器所请求的内容是在哪台回源服务器上。映射系统常见采用域名解析系统(像BIND9或轻量级的mydns等开源DNS软件都可以实现这个功能)。

另外映射系统还需要担负起多链路载负载均衡的任务,当拥有多条链路(专线、P2P、VPN等)可以到达回源服务器时,应该选择一条最优的链路,特别是涉及到国际互联网不稳定的时候,通过多节点服务器中继可以减少链路无法通过的情况发生。

三、监控系统

将各CDN节点服务器的流量、健康状态,布署节点服务器,主动上报到监控系统上,根据监控系统对各节点流量、响应时间和节点服务器所处机房的网络出现异常情况,通过更新DNS记录的方式切换到其他节点服务器,但是DNS的TTL时间需要设置更短,建议在60秒左右,相应的映射系统的压力将会有所增大。当故障节点恢复时,监控系统再次更新DNS记录切换到正常的CDN节点。

四、传输系统

传输层是节点服务器与回源服务器之间的动态数据传输,,也可以理解是广域网加速技术,广域网加速优化是一件复杂且耗费资金的事情。目前市场广域网加速的产品一般都比较昂贵。所以,如果能以免费的开源工具达到相同功效,这是我们的追求。不管是硬件还是软件广域网加速技术总结出来主要是从再从个方面进行解决,数据层面的传输优化(即:压缩与重复数据删除)和TCP协议优化技术。

以上提到的两个方面也有相应的开源工具(WANProxy和BBR)。WANProxy 是一个开源的广域网优化方案,是一个开源的 TCP 代理服务器,基于数据去重技术进行优化。2016年9月份Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.9 版内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,所以应该比较靠谱。

阅读(1098) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~