Posted on 2011-01-19 20:24
點點滴滴 閱讀(631)
評論(0) 編輯 收藏 引用 所屬分類:
10 服務(wù)器
如果你有一個很受歡迎的Web站點,你會發(fā)現(xiàn)當(dāng)請求的連接數(shù)增加時,服務(wù)器的響應(yīng)延時也會隨之增加。雖然你可以增加RAM、升級處理器、使用更快的驅(qū)動器及總線,這在短期內(nèi)會有一定的幫助,但最終會發(fā)現(xiàn)一臺服務(wù)器無法完成需要的任務(wù)。
使用多臺服務(wù)器平衡負(fù)載是一個不錯的想法,你可以在你的服務(wù)器池中隨意增加多臺服務(wù)器來提高服務(wù)器的性能和增強(qiáng)網(wǎng)絡(luò)的穩(wěn)定性。如果你的服務(wù)器池中有多臺服務(wù)器,當(dāng)一臺down機(jī)后,其他服務(wù)器可以接替它的工作,繼續(xù)提供服務(wù)而不至于造成服務(wù)中斷。
通過使用RR-DNS(Round-Robin Domain Name System)可以實現(xiàn)平衡負(fù)載的功能,向一個主機(jī)名發(fā)出的入站請求可以被轉(zhuǎn)發(fā)到多個IP地址上。
在BIND9中實現(xiàn)此功能就向添加一條A記錄那么簡單。舉例說,如果我們向somode.com區(qū)域文件中加入下面行便可實現(xiàn):
www 60 IN A 220.181.11.124
60 IN A 220.181.11.125
當(dāng)然你還可以根據(jù)需要加入更多服務(wù)器。這樣如果有人請求解析[url]www.somode.com[/url]時將有一半的機(jī)率解析到220.181.11.124上,而另一半會解析到220.181.11.125上。
然而,使用RR-DNS方法實現(xiàn)負(fù)載平衡也會帶來一些問題:
第一,域名服務(wù)器是一個分布式系統(tǒng),是按照一定的層次結(jié)構(gòu)組織的。當(dāng)用戶將域名解析請求提交給本地的域名服務(wù)器,它會因不能直接解析而向上一級域名服務(wù)器提交,上一級域名服務(wù)器再依次向上提交,直到RR-DNS 域名服務(wù)器把這個域名解析到其中一臺服務(wù)器的IP 地址。可見,從用戶到RR-DNS 間存在多臺域名服務(wù)器,而它們都會緩沖已解析的名字到IP 地址的映射,這會導(dǎo)致該域名服務(wù)器組下所有用戶都會訪問同一Web 服務(wù)器,出現(xiàn)不同Web 服務(wù)器間的負(fù)載不平衡。為了保證在域名服務(wù)器中域名到IP 地址的映射不被長久緩沖,RR-DNS 在域名到IP 地址的映射上設(shè)置一個TTL(Time To Live)值,過了這一段時間,域名服務(wù)器將這個映射從緩沖中淘汰。當(dāng)用戶請求,它會再向上一級域名服務(wù)器提交請求并進(jìn)行重新映射。這就涉及到如何設(shè)置這個TTL值,若這個值太大,在這個TTL 期間,很多請求會被映射到同一臺Web 服務(wù)器上,同樣會導(dǎo)致負(fù)載不平衡。若這個值太小,例如是0,會導(dǎo)致本地域名服務(wù)器頻繁地向RR-DNS提交請求,增加了域名解析的網(wǎng)絡(luò)流量,同樣會使RR-DNS 成為系統(tǒng)中一個新的瓶頸。
第二,用戶機(jī)器會緩沖從名字到IP 地址的映射,而不受TTL 值的影響,用戶的訪問請求會被送到同一臺Web 服務(wù)器上。由于用戶訪問請求的突發(fā)性和訪問方式不同,例如有的人訪問一下就離開了,而有的人訪問可長達(dá)幾個小時,所以各臺服務(wù)器間的負(fù)載仍存在傾斜(Skew)而不能控制。假設(shè)用戶在每個會話中平均請求數(shù)為20,負(fù)載最大的服務(wù)器獲得的請求數(shù)額高于各服務(wù)器平均請求數(shù)的平均比率超過百分之三十。也就是說,當(dāng)TTL 值為0 時,因為用戶訪問的突發(fā)性也會存在著較嚴(yán)重的負(fù)載不平衡。
第三,系統(tǒng)的可靠性和可維護(hù)性不好。若一臺服務(wù)器失效,會導(dǎo)致將域名解析到該服務(wù)器的用戶看到服務(wù)中斷,即使用戶按“Reload”按鈕,也無濟(jì)于事。系統(tǒng)管理員也不能隨時地將一臺服務(wù)器切出服務(wù)進(jìn)行維護(hù),如進(jìn)行操作系統(tǒng)和應(yīng)用軟件升級,這需要修改RR-DNS 服務(wù)器中的IP 地址列表,把該服務(wù)器的IP 地址從中劃掉,然后等上一段時間,等所有域名服務(wù)器將該域名到這臺服務(wù)器的映射淘汰,和所有映射到這臺服務(wù)器的客戶機(jī)不再使用該站點為止。
RR-DNS方法只是一個簡單的負(fù)載平衡方案,如果你有更高要求,可以研究LVS集群(IPVS和KTCPVS、TCPHA),實現(xiàn)基于IP的負(fù)載均衡和基于內(nèi)容的負(fù)載均衡。