Cdn设计实现及负载匀衡.ppt_第1页
Cdn设计实现及负载匀衡.ppt_第2页
Cdn设计实现及负载匀衡.ppt_第3页
Cdn设计实现及负载匀衡.ppt_第4页
Cdn设计实现及负载匀衡.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CDN设计实现及负载均衡,解决高并发访问及缓存加速的一种途径,需求的产生,南北互联问题导致北方的用户访问电信网内的服务器十分缓慢和艰难,南方的用户访问网通网内的服务器也是如此 高并发、大流量的站点 访问加速,nginx承担每个机房Web负载均衡服务,简单的Nginx负载均衡配置, upstream bbs_server_pool server 5:80 weight=1 max_fails=2 fail_timeout=30s; server 6:80 weight=1 max_fails=2 fail_timeout=30s; server 192

2、.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s; server 8:80 weight=1 max_fails=2 fail_timeout=30s; 在nginx.conf配置文件中,用upstream指令定义一组反向代理/负载均衡后端服务器池。,简单的Nginx负载均衡配置, server listen80; server_name *; location / proxy_pass http:/bbs_server_pool; proxy_set_header Host $host; proxy_set_heade

3、r X-Forwarded-For $remote_addr; access_log off; ,简单的Nginx负载均衡配置,proxy_pass http:/bbs_server_pool; 用于指定反向代理的服务器池。 proxy_set_header Host $host; 当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。 proxy_set_header X-Forwarded-For $remote_addr; 如果后端Web服务器上的程序需要获取用户IP,请从该Header头获取。,Nginx负载均衡双机互备,正常情况下,两台Nginx负

4、载均衡服务器全部处于活动状态,对外提供服务。,Squid 反向代理加速网站,Squid 反向代理的实现原理,客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。,配置的系统环境:,一台 DNS 服务器:操作系统 Freebsd,软件 BIND 9.5,IP 192.168.76.

5、222 ; 三台 Squid 服务器:操作系统 Linux AS 4,软件 Squid 3.0,相应的 IP 如下: Squid1:23 Squid2:24 Squid3:25 三台 WEB 服务器:操作系统 Linux AS 4,应用软件 Tomcat 5.0+Mysql,相应的 IP 地址如下: webServer1:95 webServer2:26 webServer1:27,配置 Squid1 服务器,# 配置 squid2、squid3 为其

6、邻居,当 squid1 在其缓存中没有找到请求的资源时, 通过 ICP 查询去其邻居中取得缓存 cache_peer sibling 80 3130 cache_peer sibling 80 3130 # squid1 的三个父节点,originserver 参数指明是源服务器, round-robin 参数指明 squid 通过轮询方式将请求分发到其中一台父节点; squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了, 那么 squid 会从剩余的 origin 服务器中抓取数据 cache_peer 95 parent 8080 0 no-q

7、uery originserver round-robin name=webServer1 cache_peer 26 parent 8080 0 no-query originserver round-robin name=webServer2 cache_peer 27 parent 8080 0 no-query originserver round-robin name=webServer3 # 将 域的请求通过 RR 轮询方式转发到三个父节点中的一个 cache_peer_domain webServer1 webServer2 web

8、Server3 ,Nginx,squid,现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。 最新的Nginx 0.8.35版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存),已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月,十分稳定,速度不逊于 Squid。在功能上,Ng

9、inx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。,memcached介绍,Memcached由Danga Interactive开发,用于提升LiveJ访问速度的LJ每秒动态页面访问量几千次,用户700万。 Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问. 通过在内存里维护一个统一的

10、巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以 及数据库检索的结果等它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端, 同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度,Consistent Hashing算法,为了防止由于对cache结点的hash算法结果的不均匀,导致cache结点在圆环上的分布过于不均,使得每个cache的负载不同,consistent hashing算法还引用了virtual node的概念。也就是在对cache结点计算hash的时候,通过对hash过程

11、的微调,使每个结点都算出很多(例如200个)hash值,这些值以virtual node的形式添加到环上,所有属于这些virtual node的缓存对象都映射到该实际结点上,这样就基本能保持每个cache结点在hash空间中cover住基本同样多的对象了. Cache 命中率算法:服务器台数(n)和增加的服务器台数(m)计算增加服务器后的命中率计算公式如下: (1 - n/(n+m) * 100,一般的cache,利用Consistent Hashing,上图的状态中添加一台memcached服务器。余数分布式算法由于保存键的服务器会发生巨大变化 而影响缓存的命中率,但Consistent H

12、ashing中,只有在continuum上增加服务器的地点逆时针方向的 第一台服务器上的键会受到影响。 因此,Consistent Hashing最大限度地抑制了键的重新分布。 而且,有的Consistent Hashing的实现方法还采用了虚拟节点的思想。 使用一般的hash函数的话,服务器的映射地点的分布非常不均匀。 因此,使用虚拟节点的思想,为每个物理节点(服务器) 在continuum上分配100200个点。这样就能抑制分布不均匀, 最大限度地减小服务器增减时的缓存重新分布。 通过下文中介绍的使用Consistent Hashing算法的memcached客户端函数库进行测试的结果是,

13、 由服务器台数(n)和增加的服务器台数(m)计算增加服务器后的命中率计算公式如下: (1 - n/(n+m) * 100,常见的应用场景:一般用于静态对象,网站的页面加速(指静态) 下载服务:类似杀毒软件有客户端自动更新机制的下载,更需要cdn 视频:特别是在线播放类型,如FLV,传统的访问模式,所以的客户端访问同一个对象 众矢之的,Cdn的访问模式,把用户请求分散,Cdn定义-摘自,CDN的全称是Content Delivery Network,即内容分发网络,是位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中增加一层新的网络架构,通过智能的中心管理系统,使用广泛分布

14、的服务器群来帮助网站、媒体运营商等满足用户的各类需求。,Cdn原理,内容缓存到不同地区的缓存服务器 就近访问原则 Dns视图(view)区分用户的访问来源,Cdn实现的实现,关键技术 (1) dns视图(view):bind9 或dnspod (2)内容缓存:squid,nginx 辅助技术 (1)负载均衡:lvs+keepalived(win下是NLB群集) (2)监控:nagios,cacti,Cdn设计要点,选定核心缓存节点(电信、网通各2个) 选定边缘缓存节点(覆盖到省) 归类ip地址:哪些ip地址属于哪些运营商?Dns的解析依赖一个庞大的地址库判定客户请求来源,然后才可能实现用户的就

15、近访问。 容错和负载均衡 如果自己做一个简单的cdn应用,可能只需要电信和网通2个节点,不必有边缘和核心的区分;ip库也简化成电信、网通、其他,即dns只涉及3个视图(VIEW),一个样例,用户dns处理,一般情况下,用户的dns用A记录直接把主机名解析到源站IP. 为了做cdn及负载。我们将域名指向多台缓存ip(vip),利用dns(dnspod)做线路判断。Vip利用squid或nginx做负载真正的web服务。,集群与负载均衡,所有节点都在各自的网段采取集群和负载均衡技术 Lvs结合keepalived是最佳的选择,压力测试,监控:,压力测试(apache下的ab; webbench)

16、服务及主机监控:nagios是很不错的选择。 流量监控: cacti或mrtg 报警:使用mail方式,使用飞信短信方式。可以外购短信服务,把它整合到监控平台中,搜企平台规划图linux,1,线路平台,利用dnspod分配不同线路用户。 2,用nginx+(程序)+mysql(单独服务),实现web平台 用vip实现nginx反向代理。(双机互备) 3,用memcached 实现数据库缓存。consisten hashing实现在增,减 men服务时稳定命中率。 4,索引利用sphinx+mysql实现。,搜企平台结构Window平台下,1,先做dnspod做为智能解析。区分客户线路 2, 用

17、squid 或nginx做为静态页面缓存 存缓 3,利用nginx做为静态页面存储(网页,图片,ccs等)。 并做为web负载均衡,和缓存。 4,利用nginx负载技术,做windos下iis+tocmat+solr +solr-memcache的动态处理。 5,利用memcache进行数据缓存。数据库为sql2005 6, 数据同步。Linux下用sersync;window下用cwrsync,搜企.cn平台运维规划思路及拓扑图解释,需求点: 考虑对像 互联网上不同地区,不同线路的客户能快速查询搜企.cn网站的信息。且能准确返回给客户有用的信息。(注意点“不同线路”“快速即响应时间”“准确性

18、”)总之一句话,在有限的资源(人力资源,硬件资源,带宽资源,ip资源)下,以人为本,以客户最好的需求为前提,做到让客户喜欢,需要的平台。,规划平台主要几点思路,1,dnspod做为智能解析,区分不同线路的客户,提高因线路不同而造成的响应速度。(中国目前有电信,网通,铁通等线路)。 2,利用squid集群(最好3台以上的配置)做为最前端。做为静态信息的缓存和做为后端真实web服务的反向代理功能。 Squid做为前端,提高了访问速度,对真实的web也启到安全性的做用。 Squid配置几点: A)可用dns服务做为轮询,向访问信息分配到不同的squid服务。 B)前面的A项,可改为利用lvs+keepalive实现负载。(好处是健康状态检查,权重分配),对不同硬件配置,不同带宽的服务群是一个好的选择,能较好的分配流量走向。,3,nginx做为真实的web服务,用于存储静态信息(静态网页,图片,js,css,swf等静态信息)。Nginx具有高并发,稳定性,低消耗,故障转移等特性。 Nginx配置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论