簡單cdn
第七章 簡單cdn7.1 cdn概述Cdn 是Content Delivery Network首字母縮寫,譯成中文就是內(nèi)容分發(fā)網(wǎng)絡(luò)。使用cdn 技術(shù)的主要目的在于增加訪問速度、解決南北互聯(lián)(中國適用)
第七章 簡單cdn
7.1 cdn概述
Cdn 是Content Delivery Network首字母縮寫,譯成中文就是內(nèi)容分發(fā)網(wǎng)絡(luò)。使用cdn 技術(shù)的主要目的在于增加訪問速度、解決南北互聯(lián)(中國適用)、提高用戶體驗(yàn)等等。Cdn 歷史上最有名的事件:當(dāng)屬關(guān)于克林頓丑聞的斯塔爾報(bào)告被放在互聯(lián)網(wǎng), 因下載該報(bào)告的人太多, 最終導(dǎo)致服務(wù)器癱瘓。該事件直接促使cdn 的誕生。
最早的商業(yè)cdn 服務(wù)可能誕生于1999年,但本人聞之cdn 這個業(yè)務(wù)則是2005年的事情了。到了2006年的春天,我有幸得到一個cdn 設(shè)計(jì)方面的工作,這才有機(jī)會全面了解cdn 原理、設(shè)計(jì)、部署以及運(yùn)營等。
7.1.1 為什么需要使用cdn
1、解決網(wǎng)站高流量、大并發(fā)的問題。我們知道,任何一個物理設(shè)備,其負(fù)載都有一個極限。為了應(yīng)對訪問量突增,使用cdn 服務(wù)是一個好的系統(tǒng)擴(kuò)容方案。
2、解決南北互聯(lián)問題。我國的網(wǎng)絡(luò)是劃江而治的格局,因?yàn)槔嬷疇?,各網(wǎng)絡(luò)服務(wù)商之間并不是通力協(xié)作,而是采取各種手段相互限制。這就導(dǎo)致各網(wǎng)之間的互聯(lián)互通存在很大的問題,具體表現(xiàn)為:電信的用戶訪問放置在網(wǎng)通機(jī)房的服務(wù)器,響應(yīng)時間特別長,反之亦然。使用cdn 技術(shù),可以讓電信的用戶訪問電信的內(nèi)容緩存服務(wù)器,網(wǎng)通的用戶訪問網(wǎng)通的內(nèi)容緩存服務(wù)器。通過這樣一種策略,繞開了網(wǎng)絡(luò)運(yùn)營商之間人為設(shè)置的障礙。
3、訪問加速。Cdn 采用緩存技術(shù),把訪問對象緩存起來,有的技術(shù)甚至能把對象緩存到內(nèi)存(如varnish ),這在效果上表現(xiàn)出來即是訪問加速。
4、降低總體運(yùn)營成本。在一些互聯(lián)互通比較好的第三方BGP 機(jī)房,其帶寬費(fèi)高達(dá)300-400元/兆/月,而二、三線城市單線接入的帶寬費(fèi)100M 一年的費(fèi)用才5萬左右。使用cdn 運(yùn)營方案,我們把源站放在BGP 機(jī)房,而把緩存服務(wù)器放置在帶寬費(fèi)用較低的其它地方。因?yàn)閏dn 的大部分流量被轉(zhuǎn)移到緩存服務(wù)器上,源站只有較小的訪問請求,因此總體運(yùn)營成本大幅降低。
5、提高網(wǎng)站的可用性。源站的訪問量變得很小,這意味著源站系統(tǒng)有更低的負(fù)載,更低的磁盤i/o,除故障的幾率大大降低。對于緩存服務(wù)器,多個服務(wù)器做成集群,保證整個系統(tǒng)的高可用。
6、防ddos 攻擊。攻擊負(fù)載被分配到不同的物理服務(wù)器,客觀上起到防ddos 的作用。
7.1.2 cdn適用的場合
任何一門技術(shù),都有一定的適用范圍,cdn 也不另外。實(shí)踐證明,cdn 對于靜態(tài)對象的加速和發(fā)布具有很好的效果,但對于動態(tài)的網(wǎng)站,則效果不佳。為了使用cdn 技術(shù)所帶來的好處,我們可以通過動態(tài)內(nèi)容靜態(tài)化、靜態(tài)內(nèi)容分離(如動態(tài)站點(diǎn)里的圖片)等方式,來加速訪問和增強(qiáng)用戶體驗(yàn)。
有哪些對象是靜態(tài)可緩存的呢?這包括html 頁面文件、視頻文件、js 文件、css 文件、exe 文件、圖片文件(jpeg 、gif 、png 等)等。
7.1.3 cdn的組成
Cdn 是一種組合技術(shù),它包括源站、緩存服務(wù)器、智能dns 、客戶端等幾個部分。
源站指發(fā)布內(nèi)容的原始站點(diǎn)。新增、刪除和更改網(wǎng)站的文件,都是在源站上進(jìn)行的;緩存服務(wù)器抓取的對象也全部來自于源站。
,緩存服務(wù)器是直接提供給用戶訪問的站點(diǎn)資源,有一個或數(shù)個服務(wù)器組成;當(dāng)一個用戶發(fā)起訪問時,他的訪問請求被智能dns 定位到離他較近的緩存服務(wù)器。如果訪問所需的內(nèi)容沒有被緩存,則緩存服務(wù)器向鄰近的緩存服務(wù)器或直接向源站抓取內(nèi)容,然后再返還給用戶;如果用戶所請求的內(nèi)容剛好在緩存里面,則直接把內(nèi)容返還給用戶。
智能dns 是整個cdn 的核心,它負(fù)責(zé)根據(jù)用戶的來源,將其訪問請求轉(zhuǎn)向到離用戶較近或較合適的緩存服務(wù)器—如把長沙電信的用戶請求轉(zhuǎn)向到長沙電信機(jī)房的緩存服務(wù)器。實(shí)現(xiàn)智能dns 的一種技術(shù)是:bind view ,在bind 9以后的版本,都應(yīng)該支持view 視圖這個功能。另外還有一個次一點(diǎn)的方案,即dns 輪詢方式。
客戶端即普通發(fā)起訪問的用戶,一般的訪問方式是瀏覽器。這個不再做說明。
除了前面列舉的組件外,還有一個可選項(xiàng)目,即用來進(jìn)行內(nèi)部域名以及源站的域名解析。因?yàn)槭强蛇x的,因此也可以通過使用本地hosts 指定主機(jī)名來代替。不過有一點(diǎn)需要注意,內(nèi)部域名系統(tǒng)不能使用合法注冊的域名服務(wù)器,也即在互聯(lián)網(wǎng)上,找不到這個域名系統(tǒng)的NS 記錄。為什么呢?請繼續(xù)往下看。
接下來,我們以圖示來總結(jié)一下cdn 各組件間的關(guān)系和訪問流程。

Dns 查詢路徑
戶
圖7-1 cdn各部分關(guān)系
圖7-1展示了兩種比較典型的訪問場景, 這兩種場景, 基本上能反應(yīng)整個cdn 的工作機(jī)制:
場景一:當(dāng)“A 網(wǎng)用戶”訪問被cdn 加速的站點(diǎn) http://www.formyz.cn時,從本地的dns 查詢域名, 最終可能在全局智能dns 服務(wù)器得到域名所對應(yīng)的ip 地址,即本圖所示“A 網(wǎng)的緩存服務(wù)器”的ip ;接著“A 網(wǎng)用戶”瀏覽器向“A 網(wǎng)的緩存服務(wù)器”發(fā)起訪問請求,幸運(yùn)的是所需的默認(rèn)頁面文件index.htm 正好被緩存在“A 網(wǎng)的緩存服務(wù)器”里,于是緩存服務(wù)器立即返還數(shù)據(jù),完成一次訪問請求。
場景二:當(dāng)“B 網(wǎng)用戶”訪問被cdn 加速的站點(diǎn) http://www.formyz.cn時,從本地的dns 查詢域名,
,最終可能在全局智能dns 服務(wù)器得到域名所對應(yīng)的ip 地址,即本圖所示“B 網(wǎng)的緩存服務(wù)器”的ip ;接著“B 網(wǎng)用戶”瀏覽器向“B 網(wǎng)的緩存服務(wù)器”發(fā)起訪問請求,但是緩存服務(wù)器并沒有緩存默認(rèn)頁面文件index.html, 它需要先從源站取得這個對象,緩存并把內(nèi)容返還給“B 網(wǎng)用戶”。“B 網(wǎng)緩存服務(wù)器”通過“內(nèi)部dns ”知道源站在哪里。
7.1.4 cdn的基本原理
Cdn 的基本原理可概括為:內(nèi)容緩存、就近訪問以及以dns 視圖方式根據(jù)用戶來源確定其訪問位置。
◆ 內(nèi)容緩存:緩存服務(wù)器從源站取得所需數(shù)據(jù),然后暫存在本地的硬盤或內(nèi)存。使用這種緩存機(jī)
制的好處是:(1)內(nèi)容自動更新;(2)無多個服務(wù)器數(shù)據(jù)相互同步問題。
◆ 就近訪問:讓用戶的訪問請求轉(zhuǎn)向到離用戶最近或最易于訪問的緩存服務(wù)器。
◆ 以dns 視圖方式根據(jù)用戶來源確定其訪問位置:即讓電信的用戶訪問電信的緩存服務(wù)器,網(wǎng)通
用戶訪問網(wǎng)通的緩存服務(wù)器。
7.1.5 什么是簡單cdn
簡單cdn 這個概念,是相對于復(fù)雜cdn 來定義的。因此,我們先來了解一下什么是復(fù)雜的cdn 。
籠統(tǒng)一點(diǎn)的講,cdn 服務(wù)提供商所運(yùn)營的環(huán)境,就是復(fù)雜cdn 。就緩存服務(wù)器而言,其結(jié)構(gòu)是分層次的,一般可劃分成核心節(jié)點(diǎn)和邊緣節(jié)點(diǎn)。并且同一層級的相鄰節(jié)點(diǎn)之間又可形成姐妹關(guān)系,亦即在同一個集群下的節(jié)點(diǎn)互為姐妹關(guān)系。為了保證最高的性能能和效率,不建議跨網(wǎng)或跨物理范圍的節(jié)點(diǎn)形成姐妹關(guān)系。為了更直觀的理解這個結(jié)構(gòu)和由此產(chǎn)生的好處,我在這里以一個最長訪問路徑的圖示來說明:


源站服務(wù)器

圖7-2 緩存服務(wù)器相互關(guān)系
1、用戶向某邊緣服務(wù)器(邊緣A )發(fā)起訪問請求,所需內(nèi)容沒有被緩存。
,2、邊緣服務(wù)器(邊緣A )于是詢問其鄰居,是否緩存了用戶所需的請求對象,鄰居節(jié)點(diǎn)也沒有緩
存所需的對象。
3、邊緣服務(wù)器(邊緣A )轉(zhuǎn)而向某個父節(jié)點(diǎn)(核心A )請求文件,如果該父節(jié)點(diǎn)仍然無所需的文
件,則該父節(jié)點(diǎn)詢問其鄰居;如果鄰居也沒有所需的文件,則把請求轉(zhuǎn)給源站。
4、源站返回?cái)?shù)據(jù)給核心節(jié)點(diǎn)(核心A ),并緩存數(shù)據(jù)在該節(jié)點(diǎn)。
5、核心節(jié)點(diǎn)(核心A )返還數(shù)據(jù)給邊緣節(jié)點(diǎn)(邊緣A ),并緩存數(shù)據(jù)在該節(jié)點(diǎn)。
6、邊緣節(jié)點(diǎn)返還數(shù)據(jù)給用戶,一次最長路徑的訪問完成。
這種分層次的機(jī)制,既能保證最高的可用性,又能最大限度的減少向上一級節(jié)點(diǎn)的網(wǎng)絡(luò)流量。
除了緩存服務(wù)器結(jié)構(gòu)上的差異外,復(fù)雜cdn 還具備以下一些特性:
(1) 緩存服務(wù)器布點(diǎn)范圍廣,服務(wù)器數(shù)量龐大。
(2) 復(fù)雜的日志處理系統(tǒng)。因?yàn)橛?jì)費(fèi)依賴于訪問日志。
(3) 詳細(xì)的視圖劃分。例如精確到每個省的ip 地址段。
(4) 預(yù)加載機(jī)制。
當(dāng)我們了解清楚復(fù)雜cdn 以后,再來了解簡單cdn 就容易多了。所謂簡單cdn ,就是節(jié)點(diǎn)層次簡單、服務(wù)器數(shù)量有限、能實(shí)現(xiàn)有限規(guī)模站點(diǎn)加速和發(fā)布的平臺。通常情況下,我們不必為實(shí)現(xiàn)cdn 帶來的好處而部署復(fù)雜的cdn 系統(tǒng),這將花費(fèi)巨大的人力物力。把復(fù)雜的cdn 簡化,使之符合我們的業(yè)務(wù)需求,是本章“簡單cdn ”撰寫的用意所在。
7.2簡單cdn 設(shè)計(jì)
先申明一下, 本文所設(shè)計(jì)的簡單cdn 只是一個樣例,并非適用于所有的場景。讀者可根據(jù)我的思路,設(shè)計(jì)出更適合自己應(yīng)用環(huán)境的簡單cdn 。
7.2.1 簡單cdn 設(shè)計(jì)的基本原則
簡單cdn 設(shè)計(jì)主要考慮以下幾點(diǎn):
(1) 選點(diǎn)合理,能覆蓋大部分網(wǎng)絡(luò)用戶。最起碼得在電信和網(wǎng)通機(jī)房放置緩存服務(wù)器,如果經(jīng)
費(fèi)充裕,把教育網(wǎng)也考慮進(jìn)來。
(2) 系統(tǒng)本身具備很好的高可用特性。用戶的訪問主要集中在緩存服務(wù)器,緩存服務(wù)器之間使
用集群技術(shù)就能得到比較高的系統(tǒng)可用性。
(3) 核算自建簡單cdn 的成本,使之有較好的性價比。如果自建一個cdn 遠(yuǎn)比購買cdn 服務(wù)商
所花費(fèi)的資金還高(目前國內(nèi)商用cdn 每兆帶寬為50元/月,基數(shù)是1G ),基本上沒必要自己建立cdn 了。
(4) 系統(tǒng)應(yīng)該具備很好的伸縮能力,以適應(yīng)各種業(yè)務(wù)變化。如增加布點(diǎn)、增加設(shè)備、增加站點(diǎn)
等等。
7.2.2 需求描述
欲對三個web 服務(wù)進(jìn)行加速,為了描述方便,使用域名來進(jìn)行說明。這三個加速站點(diǎn)為圖片站點(diǎn) images.sery .cn 、下載站點(diǎn)dl.sery .cn 、主站 ,3個站點(diǎn)全部是靜態(tài)內(nèi)容,其頁面文件主要是.html(htm)、.exe 、css 、jpeg 、js 等,非常適合被緩存。
服務(wù)的主要目標(biāo)用戶包括電信線路的用戶、網(wǎng)通線路的用戶、教育網(wǎng)的用戶,其他線路的用戶(如科技網(wǎng)、長城寬帶等)訪問請求被轉(zhuǎn)向到網(wǎng)通線路的緩存服務(wù)器。為了實(shí)現(xiàn)這個目標(biāo),我們可能需要放置4組服務(wù)器來做緩存,即電信一組,網(wǎng)通2組,教育網(wǎng)一組。
7.2.3 簡單cdn 設(shè)計(jì)
,需求明確之后,接下來的設(shè)計(jì)工作包括:布點(diǎn)選擇、工具選取、cdn 結(jié)構(gòu)設(shè)計(jì)等幾部分。
◆ 布點(diǎn)選取
布點(diǎn)包括源站、全局智能dns 、緩存服務(wù)器集群。
(1) 源站及全局智能dns 選擇互聯(lián)互通性較好的第三方bgp 機(jī)房;因?yàn)槭褂胏dn 服務(wù)的站點(diǎn)數(shù)
量有限,故在緩存服務(wù)器以主機(jī)名的方式尋址源站。
(2) 緩存服務(wù)器共4組,選擇二線或三線城市的機(jī)房托管,能節(jié)省大量的資金—北京、上海等
城市帶寬價格大概在300~400元/兆/月,而偏遠(yuǎn)一點(diǎn)二三線城市(如安陽)1G 帶寬的年總費(fèi)用才8-10萬。
◆ 工具選取
工具包括操作系統(tǒng)、dns 軟件、緩存服務(wù)器軟件、負(fù)載均衡軟件、源站軟件以及定制的腳本。
(1) 所有的服務(wù)器均使用32位的centos 5.x。曾經(jīng)使用過64位的系統(tǒng),但在執(zhí)行緩存服務(wù)器的
緩存清理操作時,有些小問題。
(2) Dns 使用bind-9.4.0。低于9的版本,可能不支持視圖view, 沒有視圖功能,智能dns 就無法
實(shí)現(xiàn)。不知道其他的dns 軟件有沒有支持視圖view 的,愿知者告知。
(3) 緩存服務(wù)器有兩種選擇,一種是squid ,另一種是varnish 。Squid 多用在復(fù)雜cdn 場景,它
能實(shí)現(xiàn)緩存服務(wù)器間的層級關(guān)系(鄰居形成姊妹、邊緣節(jié)點(diǎn)與核心節(jié)點(diǎn)形成父子關(guān)系),功能強(qiáng)大而配置復(fù)雜;V arnish 為后起之秀,配置簡單而性能卓越,維護(hù)起來比較簡單,因此
【注】本案選擇varnish 作為緩存工具1。
(4) 負(fù)載均衡由ipvsadm 和keepalived 兩部分組成。ipvsadm 是核心,負(fù)責(zé)包轉(zhuǎn)發(fā)和負(fù)載分?jǐn)偅?/p>
keepalived 為框架,負(fù)責(zé)故障隔離和失敗切換failover 。
(5) 可做web 服務(wù)的軟件比較多,因?yàn)檎军c(diǎn)為簡單的靜態(tài)文件,選擇nginx 比較省事。
(6) 定制腳本主要目的是自動刷新緩存服務(wù),把這個腳本放在摸個服務(wù)器上,只需執(zhí)行一次(也
可使用crontab 自動調(diào)用)就能實(shí)現(xiàn)所有緩存服務(wù)器的緩存清理。
◆ cdn 結(jié)構(gòu)設(shè)計(jì)
我們可根據(jù)cdn 的角色來設(shè)計(jì)整個結(jié)構(gòu), 這些角色包括:源站、智能dns 及緩存服務(wù)器3大部分,根據(jù)布點(diǎn)選擇和其他因素綜合考慮,我們可繪出整個cdn 的布局結(jié)構(gòu)圖。

圖7-3 cdn服務(wù)器布局
從圖中可以看出有2組緩存服務(wù)器放置在網(wǎng)通機(jī)房,這兩組服務(wù)器不在同一個物理位置,這樣做主要目的是:bind 規(guī)劃視圖view 時,能收集到的地址比較有限,不在收集列表的其他ip 地址段,則統(tǒng)統(tǒng)轉(zhuǎn)發(fā)給網(wǎng)通B 機(jī)房的服務(wù)器;另外網(wǎng)通B 機(jī)房的帶寬比較便宜,機(jī)器數(shù)量也比較多,跟其
,他網(wǎng)段的互聯(lián)互通還可以。
(1) 源站
源站為內(nèi)容的原始發(fā)布,盡管采用cdn 技術(shù)以后源站的負(fù)荷會變得很小,但為了有較高的可用性,可把它部署成負(fù)載均衡集群。
(2)智能dns
智能dns 是用來實(shí)現(xiàn)用戶訪問轉(zhuǎn)向功能,即通過建立訪問列表,判斷用戶的訪問來源,確定其訪問對象的位置。在本案中,我建立電信、網(wǎng)通、教育網(wǎng)三個ip 地址列表,未在這三個列表的稱為其他;每個列表關(guān)聯(lián)一個bind 的視圖view ,那么一共就有4個視圖view 。地址列表可以自己收集,也可以花錢購買,地址列表越大,dns 定向準(zhǔn)確性越高。在這里強(qiáng)調(diào)一下:ip 地址列表為客戶dns 服務(wù)器所在網(wǎng)段的列表,而不是用戶接入網(wǎng)絡(luò)的ip 段。客戶端計(jì)算機(jī)所設(shè)定的dns ,通常稱為用戶本地dns 。同樣,為了使其有較高的可用性,dns 采用主從同步的架構(gòu)。
(3)緩存服務(wù)器
緩存服務(wù)器是cdn 環(huán)境使用量最大的設(shè)備,為保證緩存服務(wù)本身的高可用,每個布點(diǎn)的服務(wù)器都以負(fù)載均衡集群的方式存在。根據(jù)以往的經(jīng)驗(yàn),訪問負(fù)荷比較重的機(jī)器,非常容易損壞硬盤,因此在設(shè)計(jì)時,盡可能的緩存內(nèi)容到內(nèi)存中,以增加訪問的速度和延長機(jī)器的壽命。據(jù)說,一些cdn 運(yùn)營商已經(jīng)開始用固態(tài)盤來做緩存空間。
在簡單cdn 的運(yùn)行環(huán)境中,由于我們所使用的資源有限(服務(wù)器數(shù)量有限、帶寬有限),很可能出現(xiàn)超負(fù)荷運(yùn)行的情況,如單個服務(wù)器tcp 連接數(shù)過高、cpu 負(fù)載過大、流量峰值帶寬超出合同規(guī)定的范圍等,為了隨時掌握整個系統(tǒng)的運(yùn)行情況,并能對其進(jìn)行快速反應(yīng)和調(diào)整,因此必須有監(jiān)控系統(tǒng)對其服務(wù)、資源進(jìn)行實(shí)時監(jiān)控。

【注1】最初的選擇是squid, 后因運(yùn)行過程tcp 連接數(shù)過高而換成vanish 。
7.3簡單Cdn 實(shí)現(xiàn)
這里我們講“簡單cdn 的實(shí)現(xiàn)”主要偏重于技術(shù)上的實(shí)現(xiàn),即怎么部署響應(yīng)的服務(wù)和運(yùn)行它。根據(jù)從簡到繁的順序,我們依次描述源站、緩存服務(wù)器及全局智能dns 的部署及運(yùn)行。
7.3.1 源站的部署和運(yùn)行
,源站web 服務(wù)既可以是apache ,也可以是nginx ?;谛阅芎筒渴鸷唵慰紤],選用Nginx 做web 工具。
◆ 安裝nginx
1、下載最新的穩(wěn)定版到當(dāng)前目錄 wget
2、解包 tar zxvf nginx-0.7.63.tar.gz
3、切換目錄 cd nginx-0.7.63
4、檢查是否存在pcre rpm -qa | grep pcre
5、配置 ./configure –prefix=/usr/local/nginx (請注意:不是configure 帶的選項(xiàng)越多越高明)
6、編譯、安裝 make;make install
7、檢查安裝是否正常:查看是否生成指定目錄/usr/local/nginx即可初步判定。
◆ 配置nginx
根據(jù)前面的規(guī)劃,需要把源站做成高可用的負(fù)載均衡環(huán)境,因此,需要在一個物理web 上同時運(yùn)行3個站點(diǎn),然后由3個web 組成lvs 集群。對于單個的nginx 配置文件,就是運(yùn)行3個虛擬主機(jī)。
為了方便以后的維護(hù),采取配置文件分割的方式進(jìn)行處理。即配置文件分主配置文件和虛擬機(jī)配置文件,主配置文件include 指令包含各個虛擬機(jī)配置文件。對應(yīng)于3個不同的站點(diǎn),其配置文件的名稱分別為:www.conf 、dl.conf 、images.conf.


(二) 虛擬主機(jī)配置文件,一個3個。在/usr/local/nginx/conf下創(chuàng)建目錄vhosts, 然后在這個目錄下創(chuàng)建3個虛擬機(jī)配置文件,其內(nèi)容分別如下:



做的好處是修改站點(diǎn)時只需登錄任意一個服務(wù)器做更改,而不必額外做同步操作。如果條件許可,使用分布式文件系統(tǒng)共享存儲,將會得到更好的可用性和更快的訪問速度。
上述文件都配置好以后,安裝配置文件的設(shè)定創(chuàng)建好相關(guān)的目錄,然后把相關(guān)的站點(diǎn)文件復(fù)制到
,各自的目錄。接著運(yùn)行/usr/local/nginx/sbin/nginx –t 檢查一下語法,無誤后再執(zhí)行命令 /usr/local/nginx/sbin/nginx 啟動nginx 。

hosts:
◆ 配置負(fù)載均衡
(一) 安裝和配置其他兩個服務(wù)器的nginx ,并逐個檢查其正確性。因?yàn)槿齻€服務(wù)器均以共享方式掛
接網(wǎng)站的目錄,因此只需要安裝和配置好nginx, 而不必再復(fù)制站點(diǎn)的內(nèi)容到本地文件系統(tǒng)。
(二) 部署負(fù)載均衡,具體過程參見“負(fù)載均衡”一章。負(fù)載均衡被正確配置和啟動以后,我們再
回來修改客戶端windows 的系統(tǒng)hosts 文件,使負(fù)載均衡的vip 與域名綁定,然后再用瀏覽器訪問3個域名,檢查加入負(fù)載均衡環(huán)境后,各站點(diǎn)的運(yùn)行情況。記住這個vip (125.88.62.99),以后我們在緩存服務(wù)器上會使用它。
7.3.2 緩存服務(wù)器的部署和運(yùn)行
緩存服務(wù)器部署包括負(fù)載均衡和緩存工具兩部分的操作。最開始,我使用了squid 做緩存工具,但是運(yùn)行一段時間以后,發(fā)現(xiàn)負(fù)載比較大,具體表現(xiàn)在單個服務(wù)器的tcp 連接數(shù)(ESTABLISHED )一般在20000以上,從而導(dǎo)致一些訪問失敗。后來,把它換成varnish ,則單服務(wù)器的連接數(shù)穩(wěn)定在1000以下的水平。
◆ 安裝varnish
(1) 下載varnish 到本地目錄
wget
(2) 解包 tar zxvf varnish-1.1.2.tar.gz
(3) 切換目錄 cd varnish-1.1.2
(4) 配置,編譯和安裝 ./configure –prefix=/usr/local/varnish ; make ; make install
撰寫本文的時候,varnish 的最新穩(wěn)定版本是2.0.6。跟舊的1.X 版本相比,其配置文件的書寫規(guī)則有較大的變化,具體請參照官方的文檔或手冊。
◆ 配置varnish
V arnish 的配置分兩部分:源站名稱的解析和varnish 本身配置文件。在我的應(yīng)用里,總共有3個站點(diǎn)需要緩存,因此需要解析出3個源站和配置3個站點(diǎn)的緩存。
(一)、源站地址解析。
這里我們再來回顧一下源站地址解析的作用:緩存服務(wù)器通過這個機(jī)制來尋找源站在何處。在我們這小小規(guī)模的場景,用本地hosts 綁定域名即可實(shí)現(xiàn)源站的地址解析,而在復(fù)雜的cdn 環(huán)境,

則
(二)配置varnish 。
V arnish 解包以后,可在解包后的目錄找到一個名為default.vcl 的配置樣例文件,參考這個樣例文件,則能編寫符合我們實(shí)際需求的配置。這里,我先列出完整的配置文件,然后再稍微做一些說明。
,