1、Cdn设计与技术实现,解决高并发访问的一种途径,需求的产生,南北互联问题导致北方的用户访问电信网内的服务器十分缓慢和艰难,南方的用户访问网通网内的服务器也是如此高并发、大流量的站点访问加速,常见的应用场景:一般用于静态对象,网站的页面加速下载服务:类似杀毒软件有客户端自动更新机制的下载,更需要cdn视频:特别是在线播放类型,如FLV,传统的访问模式,所以的客户端访问同一个对象 众矢之的,Cdn的访问模式,把用户请求分散,Cdn定义-摘自http:/ Delivery Network,即内容分发网络,是位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中增加一层新的网络架构,
2、通过智能的中心管理系统,使用广泛分布的服务器群来帮助网站、媒体运营商等满足用户的各类需求。,Cdn原理,内容缓存到不同地区的缓存服务器就近访问原则Dns视图(view)区分用户的访问来源,Cdn实现的技术,关键技术 (1) dns视图(view):bind (2)内容缓存:squid辅助技术 (1)负载均衡:lvs+keepalived (2)监控:nagios,mrtg,Cdn设计要点,选定核心缓存节点(电信、网通各2个)选定边缘缓存节点(覆盖到省)归类ip地址:哪些ip地址属于哪些运营商?Dns的解析依赖一个庞大的地址库判定客户请求来源,然后才可能实现用户的就近访问。容错和负载均衡 如果自
3、己做一个简单的cdn应用,可能只需要电信和网通2个节点,不必有边缘和核心的区分;ip库也简化成电信、网通、其他,即dns只涉及3个视图(VIEW),一个样例,用户dns处理,一般情况下,用户的dns用A记录直接把主机名解析到源站IP.为了使用cdn,则需要在dns服务器上使用CNAME,把域名指向到cdn运营商解析出来域名上(注意:不能是某个固定IP),如:dl IN CNAME . 当用户访问这个域名时,实际访 问的域名是,Cdn的DNS处理,Cdn使用2套 DNS系统,一套对外(即对internet提供域名解析服务,亦即是前面所使用的别名);一套内部使用的DNS,供各cdn节点使用(小规模
4、的cdn可以使用Hosts文件来实现)。,一、内部dns,Cdn姐妹( sibling )、父子(parent)名称解析解析源站地址,二、外部dns,Cdn最关键之处就是外部dns的视图功能(view)。至少需要定义3个视图:电信、网通和其他。为了更准确地提供cdn服务,建议每个省定义成一个View.视图(View)一般以网段为单位,一个网段一行,更有效的方式是搜集DNS所属网段,这样视图(view)的列表就会变得比较小,可以大大加速检索速度。,三、一个简单的dns视图片断,# KEYS FOR TSIG #key telecomkey algorithm hmac-md5;secret La
5、A4Y1MHlFSTTMz1mzwarA=;key cnckey algorithm hmac-md5;secret l/rlorcG+7hhabIFKe8Kjg=; ;key anykey algorithm hmac-md5;secret YMXXBAck4i5Sb4PlUg00Uw=;include cnc_acl.conf;include telecom_acl.conf;view view_cnc match-clients key cnckey;CNC; recursion yes; allow-transfer key cnckey; server 61.135.210.20 k
6、eys cnckey; ; server 61.135.210.10 keys cnckey; ;zone . IN type hint; file named.ca; ;zone localhost IN type master; file localhost.zone; allow-update none; ; ;zone 0.0.127.in-addr.arpa IN type master; file named.local; allow-update none; ; ;zone “ IN type master; file .zone; allow-update none; ; ;z
7、one 210.135.61.in-addr.arpa IN type master ; file 210.135.61.in-addr.arpa.zone; allow-update none; ; ;,# KEYS FOR TSIG #key telecomkey algorithm hmac-md5;secret LaA4Y1MHlFSTTMz1mzwarA=;key cnckey algorithm hmac-md5;secret l/rlorcG+7hhabIFKe8Kjg=; ;key anykey algorithm hmac-md5;secret YMXXBAck4i5Sb4P
8、lUg00Uw=;include cnc_acl.conf;include telecom_acl.conf;view view_cnc match-clients key cnckey;CNC; recursion yes; allow-transfer key cnckey; server 60.28.210.20 keys cnckey; ; server 60.28.210.10 keys cnckey; ;zone . IN type hint; file named.ca; ;zone localhost IN type master; file localhost.zone; a
9、llow-update none; ; ;zone 0.0.127.in-addr.arpa IN type master; file named.local; allow-update none; ; ;zone IN type master; file .zone; allow-update none; ; ;zone 210.28.60.in-addr.arpa IN type master ; file 210.28.60.in-addr.arpa.zone; allow-update none; ; ;,四、视图列表片断,rootnagios /var/named# more cn
10、c_acl.confacl CNC 58.16.0.0/16;58.168.225.0/24;58.17.0.0/17;58.17.128.0/17;58.17.180.0/24;58.17.186.0/24;58.18.0.0/16;58.19.0.0/16;58.20.0.0/16;58.21.0.0/16;58.22.0.0/15;58.22.0.0/16;58.23.0.0/16;58.240.0.0/15;58.242.0.0/15;222.163.128.0/17;222.163.32.0/19;222.163.64.0/18;,缓存服务器,分层设计(parent)层间堆叠( si
11、bling )禁止使用ip地址访问,一、分层设计,中心节点为父节点、边缘节点为子节点。用户的访问被分配到边缘节点,当访问没有被命中时,子节点再向父节点请求,如果父节点仍然没有被命中,则继续向源站请求。这种机制保证了源站有更小的访问流量,大大降低源站的带宽耗费。acl CNSERY dstdomain cache_peer parent 80 3130 no-query originservercache_peer_access allow CNSERY,二、层间堆叠,用户访问每个边缘服务器,如未命中,则访问临近的节点。这也是为降低源站流量和减少源站带宽所采取的措施。在实际的部署中,往往由数
12、个服务器组成一个集群,相邻节点出于一个网段内,所以这种邻接关系相互访问是很有保障的。cache_peer sibling 80 3130cache_peer sibling 80 3130cache_peer sibling 80 3130,三、禁止使用ip访问,禁止ip访问既有基于安全的考虑也有出于效率的考虑acl IP dstdom_regex 0-9+.0-9+.0-9+.0-9+$http_access deny IP,集群与负载均衡,所有节点都在各自的网段采取集群和负载均衡技术(不包括DNS)Lvs结合keepalived是最佳的选择,Keepalived 配置文件片断,#gu
13、ration File for keepalivedglobal_defs router_id LVS_sery_2vrrp_sync_group VGM group VI_OUT1 vrrp_sync_group VGB group VI_INT1 vrrp_instance VI_OUT1 state BACKUP interface eth2 lvs_sync_daemon_inteface eth2 virtual_router_id 51 priority 150 advert_int 5 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 61.135.210.4 61.135.220.123 .,监控:,服务及主机监控:nagios是很不错的选择。由于squid禁止使用访问,因此监控也应该使用域名来进行流量监控: cacti或mrtg报警:使用短信方式。可以外购短信服务,把它整合到监控平台中,谢谢,报告人:田逸()2008-01-03,