摘 要:隨著Internet的飛速發(fā)展和其對人們生活的深入影響,越來越多的個人在互聯(lián)網(wǎng)上購物、娛樂、休閑、與人溝通、獲取信息;越來越多的企業(yè)把他們與顧客和業(yè)務伙伴之間的聯(lián)絡搬到互聯(lián)網(wǎng)上,通過網(wǎng)絡來完成交易,建立與客戶之間的聯(lián)系。互聯(lián)網(wǎng)的用戶數(shù)和網(wǎng)絡流量正以幾何級數(shù)增長,特別是文本、圖像、音樂、廣告、流媒體、動畫等大量涌現(xiàn),這對網(wǎng)絡服務的可伸縮性提出很高的要求。 另外,隨著電子商務等關鍵性應用在網(wǎng)上運行,任何例外的服務中斷都將造成不可估量的損失,服務的高可用性也越來越重要。研究如何緩解網(wǎng)絡擁塞,提高用戶獲取信息的速度,并設計合理的框架,建立高性能、高可伸縮、高可用的網(wǎng)絡服務。
關鍵詞:LVS集群技術;加權輪叫調(diào)度算法;CDN網(wǎng)絡技術
中圖分類號:TP391文獻標識碼:A
文章編號:1004-373X(2008)08-141-03
LVS Clustering and Dynamic Feedback Grouping Weighted RoundRobin
Scheduling Algorithmbased SAMCCDN Network System
HUANG Jianshe
(Zhejiang Business Technology Institute,Ningbo,315012,China)
Abstract:With the rapid development of Internet and their deep influence on our life,more and more activities are carried out on the Internet,such as shopping,entertaining,communicating,searching for information,and so on.More and more firms and companies complete their business on the Internet,like setting up business relationship with customers,contacting and transacting.The users′ number and network traffic are increasing in geometric series on the Internet.The emergence of great lot of applications especially on text,image,advertisement,streaming media and flash require higher flexibility on the network system services.In addition,with some key application like Ebusiness running over network,any unexpected interruption on the network service will bring immensurable loss due to some vital issues done on the internet.Therefore the reliability of network service become more and more important.In this paper,how to reduce the network congestion to improve the uses′ acquiring information speed,and how to design the reasonable framework to build network service with high performance,high flexibility and high reliability are discussed.
Keywords:LVS clustering technology;grouping weighted RoundRobin scheduling algorithm;CDN network technology
人類社會正在進入以網(wǎng)絡為中心的信息時代,隨著Internet的飛速發(fā)展和對人們生活的深入影響,越來越多的個人在互聯(lián)網(wǎng)上購物、娛樂、休閑、與人溝通、獲取信息;越來越多的企業(yè)把他們與顧客和業(yè)務伙伴之間的聯(lián)絡搬到互聯(lián)網(wǎng)上,通過網(wǎng)絡來完成交易,建立與客戶之間的聯(lián)系。互聯(lián)網(wǎng)的用戶數(shù)和網(wǎng)絡流量正以幾何級數(shù)增長,特別是文本、圖像、音樂、廣告、流媒體、動畫等大量涌現(xiàn),這對網(wǎng)絡服務的可伸縮性提出很高的要求。 另外,隨著電子商務等關鍵性應用在網(wǎng)上運行,任何例外的服務中斷都將造成不可估量的損失,服務的高可用性也越來越重要。如何緩解網(wǎng)絡擁塞,提高用戶獲取信息的速度,成為困擾眾多企業(yè)和服務商的一大難題 ,因此CDN [1](Content Delivery Network)技術應運而生。如何給出合理的框架和有效的設計方法,建立高性能、高可伸縮、高可用的網(wǎng)絡服務,這是擺在系統(tǒng)設計者面前極富挑戰(zhàn)性的任務。本文研究和設計便是圍繞這一任務展開。
1 SAMCCND網(wǎng)絡技術簡介
用硬件和軟件方法實現(xiàn)高可伸縮、高可用網(wǎng)絡服務的需求不斷增長,這種需求可以歸結以下幾點:
(1) 可伸縮性(Scalability),當服務的負載增長時,系統(tǒng)能被擴展來滿足需求,且不降低服務質(zhì)量;
(2) 高可用性(Availability),盡管部分硬件和軟件會發(fā)生故障,整個系統(tǒng)的服務必須是每天24小時每星期7天可用;
(3) 可管理性(Manageability),整個系統(tǒng)可能在物理上很大,但應該容易管理;
(4) 價格有效性(Costeffectiveness),整個系統(tǒng)實現(xiàn)是經(jīng)濟的、易支付的。
可伸縮網(wǎng)絡服務是指網(wǎng)絡服務能隨著用戶數(shù)目的增長而擴展其性能,如在系統(tǒng)中增加服務器、內(nèi)存或硬盤等;整個系統(tǒng)很容易被擴展,無需重新設置整個系統(tǒng),無需中斷服務。換句話說,系統(tǒng)管理員擴展系統(tǒng)的操作對最終用戶是透明的,他們不會知道系統(tǒng)的改變。
可伸縮系統(tǒng)通常是高可用的系統(tǒng)。在部分硬件(如硬盤、服務器、子網(wǎng)絡)和部分軟件(如操作系統(tǒng)、服務進程)的失效情況下,系統(tǒng)可以繼續(xù)提供服務,最終用戶不會感知到整個服務的中斷,除了正在失效點上處理請求的部分用戶可能會收到服務處理失敗,需要重新提交請求。Caching和復制是建立高可用系統(tǒng)的常用技術,建立多個副本會導致如何將原件的修改傳播到多個副本上的問題。
實現(xiàn)可伸縮網(wǎng)絡服務的方法一般是通過一對多的映射機制,將服務請求流分而治之(Divide and Conquer)到多個結點上處理。一對多的映射可以在很多層次上存在,如主機名上的DNS系統(tǒng)、網(wǎng)絡層的TCP/IP、文件系統(tǒng)等。虛擬(virtual)是描述一對多映射機制的詞匯,將多個實體組成一個邏輯上的、虛擬的整體。例如,虛存(virtual memory)是現(xiàn)代操作系統(tǒng)中最典型的一對多映射機制,虛存建立一個虛擬內(nèi)存空間,將他映射到多個物理內(nèi)存上。

CDN的英文全稱是Content Delievery Network,即內(nèi)容分發(fā)傳送網(wǎng)絡。是建立在現(xiàn)有IP網(wǎng)絡基礎結構之上的一種增值網(wǎng)絡。在傳統(tǒng)的IP網(wǎng)絡中,用戶請求直接指向基于網(wǎng)絡地址的原始服務器,而CDN業(yè)務供了一個服務層,補充和延伸了Internet網(wǎng)絡,把頻繁訪問的內(nèi)容盡可能向用戶推進,提供了處理基于內(nèi)容進行流量轉(zhuǎn)發(fā)的新能力,把路由導引到最佳服務器上。他改變了分布到使用者信息的方式,從被動的內(nèi)容恢復轉(zhuǎn)為主動的內(nèi)容轉(zhuǎn)發(fā)。CDN技術是將多點負載均衡,路由或緩存技術等結合起來,利用智能分配策略,將內(nèi)容根據(jù)來訪用戶的地點,按照就近訪問的原則分配到多個節(jié)點。
2 LVS[2]集群的通用結構
LVS(Linux Virtual Servers)即Linux虛擬服務器。LVS集群采用IP負載均衡技術和基于內(nèi)容請求分發(fā)技術。調(diào)度器具有很好的吞吐率,將請求均衡地轉(zhuǎn)移到不同的服務器上執(zhí)行,且調(diào)度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。
為此,在設計時需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。LVS集群的體系結構如圖1所示,他有3個主要組成部分:
負載調(diào)度器(load balancer),他是整個集群對外面的前端機,負責將客戶的請求發(fā)送到一組服務器上執(zhí)行,而客戶認為服務是來自一個IP地址上。他可以是用IP負載均衡技術的負載調(diào)度器,也可以是基于內(nèi)容請求分發(fā)的負載調(diào)度器,還可以是兩者的結合。
服務器池(server pool),是一組真正執(zhí)行客戶請求的服務器,執(zhí)行的服務有Web,MAIL,F(xiàn)TP和DNS等。
后端存儲(backend storage),他為服務器池提供一個共享的存儲區(qū),這樣很容易使得服務器池擁有相同的內(nèi)容,提供相同的服務。
調(diào)度器采用IP負載均衡技術、基于內(nèi)容請求分發(fā)技術或者兩者相結合。在IP負載均衡技術中,需要服務器池擁有相同的內(nèi)容提供相同的服務。當客戶請求到達時,調(diào)度器只根據(jù)負載情況從服務器池中選出一個服務器,將該請求轉(zhuǎn)發(fā)到選出的服務器,并記錄這個調(diào)度;當這個請求的其他報文到達,也會被轉(zhuǎn)發(fā)到前面選出的服務器。在基于內(nèi)容請求分發(fā)技術中,服務器可以提供不同的服務,當客戶請求到達時,調(diào)度器可根據(jù)請求的內(nèi)容和服務器的情況選擇服務器執(zhí)行請求。因為所有的操作都是在操作系統(tǒng)核心空間中將完成的,他的調(diào)度開銷很小,所以他具有很高的吞吐率。
服務器池的結點數(shù)目是可變的。當整個系統(tǒng)收到的負載超過目前所有結點的處理能力時,可以在服務器池中增加服務器來滿足不斷增長的請求負載。對大多數(shù)網(wǎng)絡服務,結點與結點間不存在很強的相關性,所以整個系統(tǒng)的性能可以隨著服務器池的結點數(shù)目增加而線性增長。
后端存儲通常用容錯的分布式文件系統(tǒng),如NFS,AFS,GFS,Coda和Intermezzo等。分布式文件系統(tǒng)為各服務器提供共享的存儲區(qū),他們訪問分布式文件系統(tǒng)就像訪問本地文件系統(tǒng)一樣。同時,分布式文件系統(tǒng)提供良好的伸縮性和可用性。然而,當不同服務器上的應用程序同時訪問分布式文件系統(tǒng)上同一資源時,應用程序的訪問沖突需要消解才能使得資源處于一致狀態(tài)。這需要一個分布式鎖管理器(Distributed Lock Manager),他可能是分布式文件系統(tǒng)內(nèi)部提供的,也可能是外部的。開發(fā)者在寫應用程序時,可以使用分布式鎖管理器保證應用程序在不同結點上并發(fā)訪問的一致性。
負載調(diào)度器、服務器池和分布式文件系統(tǒng)通過高速網(wǎng)絡相連,如100 Mb/s交換機、1 000 Mb/s 等高速的網(wǎng)絡,主要為了避免當系統(tǒng)規(guī)模擴大時互聯(lián)網(wǎng)絡成為瓶頸。
3 動態(tài)反饋分組加權輪叫調(diào)度算法[3]概述
動態(tài)反饋負載均衡算法考慮服務器的實時負載和響應情況,不斷調(diào)整服務器間處理請求的比例,避免有些服務器超載時依然收到大量請求,從而提高整個系統(tǒng)的吞吐率。
加權輪叫調(diào)度算法(Weighted Round Robin Scheduling)就是以輪叫的方式同時考慮其目標服務器的綜合負載權值等依次將請求調(diào)度不同[GK!9]的服務器,即每次調(diào)度執(zhí)行i = (i + 1) mod n,并選出第i臺服務器,再權衡該服務器的權值決定是否繼續(xù)輪叫下一臺服務器。
在系統(tǒng)實現(xiàn)時,可以引入一個額外條件,當服務器的權值為零時,表示該服務器不可用而不被調(diào)度。這樣做的目的是將服務器切出服務(如屏蔽服務器故障和系統(tǒng)維護)。 如果所有的服務器都是不是負責相同的功能,或者服務器都在同一個局域網(wǎng)內(nèi),性能差別比較大時,就需要采用分組加權輪叫調(diào)度算法(Group Weighted RoundRobin Scheduling),既實現(xiàn)全局的服務器均衡,又可保持各組服務器的性能基本均衡。[HK]
4 動態(tài)反饋分組加權輪叫調(diào)度算法流程
假設有一組服務器S = {S0,S1,…,Sn-1},W(Si)表示服務器Si的權值,一個指示變量i表示上一次選擇的服務器;指示變量cw表示當前調(diào)度的權值;max(S) 表示集合S中所有服務器的最大權值,gcd(S)表示集合S中所有服務器權值的最大公約數(shù)。變量i初始化為-1,cw初始化為零。
while (true) {
i = (i + 1) mod n;
if (i == 0) {
cw = cw -gcd(S);
if (cw <= 0) {
cw = max(S);
if (cw == 0)
return NULL;
} }
if (W(Si) >= cw)
return Si;}
5 SAMCCDN網(wǎng)絡服務系統(tǒng)總體設計
內(nèi)容分發(fā)網(wǎng)絡[4](Content Distribution Network,CDN),有時也可以稱作內(nèi)容傳遞網(wǎng)絡(Content Delivery Network)。CDN的核心思想是將內(nèi)容從中心推到邊緣靠近用戶的地方,這樣,不但有效地提高了用戶訪問內(nèi)容的服務質(zhì)量,而且還能減輕中心設備和骨干網(wǎng)絡的壓力。通過CDN,可以將內(nèi)容服務從原來的單一中心服務結構變?yōu)榉植际椒战Y構,提高用戶訪問網(wǎng)站的響應速度。因而,CDN可以提高網(wǎng)絡中信息流動的效率,從技術上全面解決由于網(wǎng)絡帶寬小、用戶訪問量大、網(wǎng)點分布不均等問題,提高用戶訪問的響應速度。

總體上,CDN通常由3個部分構成:內(nèi)容管理平臺、內(nèi)容路由系統(tǒng)、Cache節(jié)點網(wǎng)絡。如圖2所示是SAMCCDN網(wǎng)絡系統(tǒng)的總體組成示意圖。其中,內(nèi)容管理平臺主要負責整個CDN系統(tǒng)的管理,特別是內(nèi)容管理,如內(nèi)容的注入和發(fā)布、內(nèi)容的分發(fā)、內(nèi)容的審核、內(nèi)容的服務等。內(nèi)容路由系統(tǒng)負責將用戶的請求調(diào)度到適當?shù)脑O備上,內(nèi)容路由通常通過負載均衡系統(tǒng)實現(xiàn)。Cache節(jié)點網(wǎng)絡是CDN的業(yè)務提供點,是面向最終用戶的內(nèi)容提供設備。
6 結 語
從整個互聯(lián)網(wǎng)寬帶應用的角度看, CDN只是其中支撐業(yè)務和應用的技術環(huán)節(jié),需要包括內(nèi)容等在內(nèi)的整個價值鏈條各相關環(huán)節(jié)的協(xié)調(diào)發(fā)展,才能真正帶動CDN技術的健康發(fā)展。
參 考 文 獻
[1]LinuxAid.CDN內(nèi)容分發(fā)網(wǎng)絡技術[EB/OL].http://tech.ccidnet.com/article/c737a42014p1.html,200341.
[2]姚耀文,茹建斌,繆炯燁.基于Linux的服務器群集方案\\[J\\].計算機工程,2001,27(4):139141.
[3]Yong M T,Ayani R.Comparison of Load Balancing Strategies on Clusterbased Web Servers [J].Simulation,2001,7 7(56):185 195.
[4]張云飛,陳常嘉.CDN:推進網(wǎng)絡內(nèi)容傳送體系變革[N].人民郵電報,20031231.
作者簡介 黃建設 女,1968年出生,湖北人,教師,雙師型。主要研究方向為網(wǎng)絡、數(shù)據(jù)庫、數(shù)據(jù)挖掘。