LINUX伺服器集群系統

計算機技術已進入以網路為中心的計算時期。由於客戶/伺服器模型的簡單性、易管理性和易維護性,客戶/伺服器計算模式在網上被大量採用。在九十年代中期,全球資訊網(World Wide Web)的出現以其簡單操作方式將圖文並茂的網上信息帶給普通大眾,Web也正在從一種內容傳送機製成為一種服務平台,大量的服務和套用(如新聞服務、網上銀行、電子商務等)都是圍繞著Web進行。這促進Internet用戶劇烈增長和Internet流量爆炸式地增長,下圖顯示了1995至2000年與Internet連線主機數的變化情況,可見增長趨勢較以往更迅猛。

基本介紹

  • 中文名:LINUX伺服器集群系統
  • 時間:1985
  • 類型:後端伺服器
  • 國家:美國
背景,IP虛擬伺服器軟體IPVS,核心Layer7交換機KTCPVS,LVS集群的特點,LVS集群的套用,LVS項目的開發進展與感觸,LVS項目的網路資源,

背景

LINUX伺服器集群系統

IP虛擬伺服器軟體IPVS

在調度器的實現技術中,IP負載均衡技術是效率最高的。在已有的IP負載均衡技術中有通過網路地址轉換(Network Address Translation)將一組伺服器構成一個高性能的、高可用的虛擬伺服器,稱之為VS/NAT技術(Virtual Server via Network Address Translation),大多數商品化的IP負載均衡調度器產品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺點和網路服務的非對稱性的基礎上,提出通過IP隧道實現虛擬伺服器的方法VS/TUN(Virtual Server via IP Tunneling),和通過直接路由實現虛擬伺服器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統的伸縮性。所以,IPVS軟體實現了這三種IP負載均衡技術,它們的大致原理如下:
Virtual Server via Network Address Translation(VS/NAT)
通過網路地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實伺服器;真實伺服器的回響報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。
Virtual Server via IP Tunneling(VS/TUN)
採用NAT技術時,由於請求和回響報文都必須經過調度器地址重寫,當客戶請求越來越多時,調度器的處理能力將成為瓶頸。為了解決這個問題,調度器把請求報文通過IP隧道轉發至真實伺服器,而真實伺服器將回響直接返回給客戶,所以調度器只處理請求報文。由於一般網路服務應答比請求報文大許多,採用VS/TUN技術後,集群系統的最大吞吐量可以提高10倍。
Virtual Server via Direct Routing(VS/DR)
VS/DR通過改寫請求報文的MAC地址,將請求傳送到真實伺服器,而真實伺服器將回響直接返回給客戶。同VS/TUN技術一樣,VS/DR技術可極大地提高集群系統的伸縮性。這種方法沒有IP隧道的開銷,對集群中的真實伺服器也沒有必須支持IP隧道協定的要求,但是要求調度器與真實伺服器都有一塊網卡連在同一物理網段上。
針對不同的網路服務需求和伺服器配置,IPVS調度器實現了如下八種負載調度算法:
輪詢(Round Robin)
調度器通過"輪詢"調度算法將外部請求按順序輪流分配到集群中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連線數和系統負載。
加權輪詢(Weighted Round Robin)
調度器通過"加權輪詢"調度算法根據真實伺服器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
最少連結(Least Connections)
調度器通過"最少連線"調度算法動態地將網路請求調度到已建立的連結數最少的伺服器上。如果集群系統的真實伺服器具有相近的系統性能,採用"最小連線"調度算法可以較好地均衡負載。
加權最少連結(Weighted Least Connections)
在集群系統中的伺服器性能差異較大的情況下,調度器採用"加權最少連結"調度算法最佳化負載均衡性能,具有較高權值的伺服器將承受較大比例的活動連線負載。調度器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。
基於局部性的最少連結(Locality-Based Least Connections)
"基於局部性的最少連結" 調度算法是針對目標IP位址的負載均衡,目前主要用於Cache集群系統。該算法根據請求的目標IP位址找出該目標IP位址最近使用的伺服器,若該伺服器是可用的且沒有超載,將請求傳送到該伺服器;若伺服器不存在,或者該伺服器超載且有伺服器處於一半的工作負載,則用"最少連結"的原則選出一個可用的伺服器,將請求傳送到該伺服器。
帶複製的基於局部性最少連結(Locality-Based Least Connections with Replication)
"帶複製的基於局部性最少連結"調度算法也是針對目標IP位址的負載均衡,目前主要用於Cache集群系統。它與LBLC算法的不同之處是它要維護從一個目標IP位址到一組伺服器的映射,而LBLC算法維護從一個目標IP位址到一台伺服器的映射。該算法根據請求的目標IP位址找出該目標IP位址對應的伺服器組,按"最小連線"原則從伺服器組中選出一台伺服器,若伺服器沒有超載,將請求傳送到該伺服器,若伺服器超載;則按"最小連線"原則從這個集群中選出一台伺服器,將該伺服器加入到伺服器組中,將請求傳送到該伺服器。同時,當該伺服器組有一段時間沒有被修改,將最忙的伺服器從伺服器組中刪除,以降低複製的程度。
目標地址散列(Destination Hashing)
"目標地址散列"調度算法根據請求的目標IP位址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
源地址散列(Source Hashing)
"源地址散列"調度算法根據請求的源IP位址,作為散列鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。

核心Layer7交換機KTCPVS

在基於IP負載調度技術中,當一個TCP連線的初始SYN報文到達時,調度器就選擇一台伺服器,將報文轉發給它。此後通過查發報文的IP和TCP報文頭地址,保證此連線的後繼報文被轉發到該伺服器。這樣,IPVS無法檢查到請求的內容再選擇伺服器,這就要求後端伺服器組提供相同的服務,不管請求被傳送到哪一台伺服器,返回結果都是一樣的。但是,在有些套用中後端伺服器功能不一,有的提供HTML文檔,有的提供圖片,有的提供CGI,這就需要基於內容的調度 (Content-Based Scheduling)。
由於用戶空間TCP Gateway的開銷太大,在作業系統的核心中實現Layer-7交換方法,來避免用戶空間與核心空間的切換和記憶體複製的開銷。在Linux作業系統的核心中,實現了Layer-7交換,稱之為KTCPVS(Kernel TCP Virtual Server)。目前,KTCPVS已經能對HTTP請求進行基於內容的調度,但它還不很成熟,在其調度算法和各種協定的功能支持等方面,有大量的工作需要做。
雖然套用層交換處理複雜,它的伸縮性有限,但套用層交換帶來以下好處:
相同頁面的請求被傳送到同一伺服器,可以提高單台伺服器的Cache命中率。
一些研究表明WEB訪問流中存在局部性。Layer-7交換可以充分利用訪問的局部性,將相同類型的請求傳送到同一台伺服器,使得每台伺服器收到的請求具有更好的相似性,可進一步提高單台伺服器的Cache命中率。
後端伺服器可運行不同類型的服務,如文檔服務,圖片服務,CGI服務和資料庫服務等。

LVS集群的特點

LVS集群的特點可以歸結如下:
功能
有實現三種IP負載均衡技術和八種連線調度算法的IPVS軟體。在IPVS內部實現上,採用了高效的Hash函式和垃圾回收機制,能正確處理所調度報文相關的ICMP訊息(有些商品化的系統反而不能)。虛擬服務的設定數目沒有限制,每個虛擬服務有自己的伺服器集。它支持持久的虛擬服務(如HTTP Cookie和HTTPS等需要該功能的支持),並提供詳盡的統計數據,如連線的處理速率和報文的流量等。針對大規模拒絕服務(Deny of Service)攻擊,實現了三種防衛策略。
有基於內容請求分發的套用層交換軟體KTCPVS,它也是在Linux核心中實現。有相關的集群管理軟體對資源進行監測,能及時將故障禁止,實現系統的高可用性。主、從調度器能周期性地進行狀態同步,從而實現更高的可用性。
適用性
</strong>後端伺服器可運行任何支持TCP/IP的作業系統,包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
負載調度器能夠支持絕大多數的TCP和UDP協定:
協定內容
TCP,HTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等
UDP,DNS,NTP,ICP,視頻、音頻流播放協定等
無需對客戶機和伺服器作任何修改,可適用大多數Internet服務。
性能
LVS伺服器集群系統具有良好的伸縮性,可支持幾百萬個並發連線。配置100M網卡,採用VS/TUN或VS/DR調度技術,集群系統的吞吐量可高達1Gbits/s;如配置千兆網卡,則系統的最大吞吐量可接近10Gbits/s。
可靠性
LVS伺服器集群軟體已經在很多大型的、關鍵性的站點得到很好的套用,所以它的可靠性在真實套用得到很好的證實。有很多調度器運行一年多,未作一次重啟動。
軟體許可證
LVS集群軟體是按GPL(GNU Public License)許可證發行的自由軟體,這意味著可以得到軟體的原始碼,有權對其進行修改,但必須保證修改也是以GPL方式發行。

LVS集群的套用

LVS項目從成立到現在為止,受到不少關注,LVS集群系統已被套用於很多重負載的站點,系統已在美、英、德、澳等國的幾十個站點上正式使用。
一些沒有上百台機器和高速的網路來實際測試LVS的終極性能,所以舉LVS的套用實例來說明LVS的高性能和穩定性。所知的一些大型LVS套用實例如下:
英國國家JANET Cache Service(wwwcache.ja.net)是為英國150所以上的大學提供Web Cache服務。他們用28個結點的LVS集群代替了原有現50多台相互獨立的Cache伺服器,用他們的話說現在速度就跟夏天一樣,因為夏天是放假期間沒有很多人使用網路。
Linux的門戶站點(www.linux.com)用LVS將很多台VA Linux SMP伺服器組成高性能的WEB服務,已使用將近一年。
SourceForge(sourceforge.net)是在全球範圍內為開發源碼項目提供WEB、FTP、Mailing List和CVS等服務,他們也使用LVS將負載調度到十幾台機器上。
世界上最大的PC製造商之一採用了兩個LVS集群系統,一個在美洲,一個在歐洲,用於網上直銷系統。
以RealPlayer提供音頻視頻服務而聞名的Real公司(www.real.com)使用由20台伺服器組成的LVS集群,為其全球用戶提供音頻視頻服務。在2000年3月時,整個集群系統已收到平均每秒20,000個連線的請求流。
NetWalk(www.netwalk.com)用多台伺服器構造LVS系統,提供1024個虛擬服務,其中本項目的一個美國鏡像站點(www.us.linuxvirtualserver.org)。
RedHat(www.redhat.com)從其6.1發行版起已包含LVS代碼,他們開發了一個LVS集群管理工具叫Piranha,用於控制LVS集群,並提供了一個圖形化的配置界面。
VA Linux(www.valinux.com)向客戶提供基於LVS的伺服器集群系統,並且提供相關的服務和支持。
TurboLinux的"世界一流Linux集群產品"TurboCluster實際上是基於LVS的想法和代碼的,只是他們在新聞發布和產品演示時忘了致謝。
紅旗Linux和中軟都提供基於LVS的集群解決方案,並在2000年9月召開的Linux World China 2000上展示。
在這裡,再引用兩位LVS用戶的評論,來進一步說明LVS的性能和可靠性。
"We tried virtually all of the commercial load balancers, LVS beats them all for reliability, cost, manageability, you-name-it." — Jerry Glomph Black, Director, Internet & Technical Operations, Real Networks, Se attle Washington, USA
;m=95385809030794&amp;w=2
"I can say without a doubt that lvs toasts F5/BigIP solutions, at least in our real world implementations. I wouldn't trade a good lvs box for a Cisco Local Director either." — Drew Streib, Information Architect, VA Linux Systems, USA

LVS項目的開發進展與感觸

LVS項目於1998年5月在網站上發布IPVS第一個版本源程式,一直得到了來自 Internet 的用戶和開發者的鼓勵和支持。應該說,剛開始發布的程式是非常簡單的,由於用戶的使用、反饋和期望,這項工作的價值,並不斷地化時間對該軟體添加新功能和完善,其中也得到其他開發者的幫助,所以該軟體逐漸發展成為功能較齊全、有用的系統,這遠遠超出當初成立項目時的想像。
目前,正在進行的 LVS項目開發工作包括:
擴充IPVS對其他傳輸協定的支持,如AH(Authentication Header)和ESP(Encapsulating Security Payload )等,這樣IPVS調度器將實現IPSec的伺服器集群。
提供一個統一的、功能較完善、更靈活的LVS集群管理軟體。
擴充和改進KTCPVS的調度算法和多種協定的支持,使之功能較完備和系統更穩定。
在TCP粘合(TCP Splicing)和TCP轉移(TCP Handoff)等方面,做一些嘗試性工作,進一步改進LVS集群中的套用層調度。
開發者做自由軟體開發的幾點感觸:
一是通過自由軟體方式可以使得軟體具有頑強的生命力;以前也做過幾個獨立的系統,如在</em><em>SUN</em>上用 Common Lisp開發的知識庫系統和基於C++的對象資料庫系統,有些地方也是做得非常漂亮的(如元級反射機制和對象的關係處理),但因為種種原因這些軟體沒有以開放源碼方式發布,現在它們在我導師的軟體倉庫里已無人問津,我也已經忘記裡面的實現細節;而LVS項目是我做著玩的,一開始只是個很簡單的程式,通過自由軟體的發布和開發,它發展成一個有用的、功能較齊全的軟體,體現了自由軟體的強大生命力。二是通過自由軟體的集市開發,可以使得初始的想法不斷地深入,可以學到很多東西。三是做自由軟體後時間會更有效率,由於用戶的反饋和期待,會自覺不斷地改進和完善系統,於是沒有時間去玩遊戲和網上聊天。四是做自由軟體會使得你有一點點成就感,每當收到用戶的致謝和想到你的軟體在實際系統中運行,會有一點滿足。所以,行動起來吧,花一些時間做自由軟體,你會有意想不到的收穫。

LVS項目的網路資源

如果對LVS項目感興趣,請訪問Linux Vritual Server項目的主頁

相關詞條

熱門詞條

聯絡我們