7. CDN 示例
商業(yè)化的CDN網(wǎng)絡(luò)是用于服務(wù)性質(zhì)的,高可用性等要求非常高,有專業(yè)產(chǎn)品和CDN網(wǎng)絡(luò)解決方案,本文主要從理論角度,理解CDN的實現(xiàn)過程,并利用已有網(wǎng)絡(luò)環(huán)境和開源軟件做實際配置,更深刻理解CDN的具體工作過程。
Linux 是開放源代碼的免費操作系統(tǒng),已經(jīng)成功應(yīng)用于許多關(guān)鍵領(lǐng)域。Bind是Unix/FreeBSD/Linux等類unix平臺上非常有名DNS服務(wù)程序,Internet上超過60%的DNS運行的是bind。Bind的最新版本是9.x,用的比較多的是8.x,bind 9有很多新特性,其中一項是根據(jù)用戶端源地址對同一域名解析不同的IP地址,有了這種特性,能把用戶對同一域名的訪問,引導(dǎo)到不同地域節(jié)點的服務(wù)器上去訪問。Squid是Linux等操作系統(tǒng)上有名的Cache引擎,與商業(yè)Cache引擎相比,Squid的性能比較低,基本功能工作原理與商業(yè)Cache產(chǎn)品是一致的,作為試驗,是非常容易配置運行起來。以下簡要介紹CDN的配置流程。
1、要加入CDN服務(wù)的網(wǎng)站,需要域名(如www.linuxaid.com.cn,地址202.99.11.120)解析權(quán)提供給CDN運營商,Linuxaid的域名解析記錄只要把www主機(jī)的A記錄改為CNAME并指向cache.cdn.com即可。cache.cdn.com是CDN網(wǎng)絡(luò)自定義的緩存服務(wù)器的標(biāo)識。在/var/named/linuxaid.com.cn域名解析記錄中,由:
www IN A 202.99.11.120 改為 www IN CNAME cache.cdn.com.
2、CDN運營商得到域名解析權(quán)以后,得到域名的CNAME記錄,指向CDN網(wǎng)絡(luò)屬下緩存服務(wù)器的域名,如cache.cdn.com,CDN網(wǎng)絡(luò)的全局負(fù)載均衡DNS,需要把CNAME記錄根據(jù)策略解析出IP地址,一般是給出就近訪問的Cache地址。
Bind 9的基本功能可以根據(jù)不同的源IP地址段解析對應(yīng)的IP,實現(xiàn)根據(jù)地域就近訪問的負(fù)載均衡,一般可以通過Bind 9的sortlist選項實現(xiàn)根據(jù)用戶端IP地址返回最近的節(jié)點IP地址,具體的過程為:
1)為cache.cdn.com設(shè)置多個A記錄,/var/named/cdn.com 的內(nèi)容如下:
$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中的內(nèi)容為:
options { directory "/var/named"; sortlist { #這一段表示當(dāng)在本地執(zhí)行查詢時 #將按照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; }; }; }; #這一段表示當(dāng)在202/8地址段進(jìn)行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; }; }; }; #這一段表示當(dāng)在211/8地址段進(jìn)行DNS查詢時 #將按照211.99.13.47,202.93.22.13,210.21.30.90的順序返回地址, #也就是211.99.13.47是最靠近查詢地點的節(jié)點 { 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網(wǎng)絡(luò)中如果工作在服務(wù)器加速模式,因為配置里已經(jīng)寫明加速服務(wù)器的url,所以Cache直接匹配用戶請求,到源服務(wù)器獲得內(nèi)容并緩存供下次使用;如果Cache工作在客戶端加速模式,Cache需要知道源服務(wù)器的IP地址,所以CDN網(wǎng)絡(luò)維護(hù)和運行一個供Cache使用的DNS服務(wù)器,解析域名的真實IP地址,如202.99.11.120 ,各域名的解析記錄與未加入CDN網(wǎng)絡(luò)之前一樣。
4、工作在CDN網(wǎng)絡(luò)中緩存服務(wù)器必須工作在透明方式,對于Squid來說,需要設(shè)置以下參數(shù):
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
上一頁 [1] [2] [3] [4] |