【摘要】由于網(wǎng)絡快速發(fā)展,現(xiàn)在有些服務器在同一時間內(nèi)負載暴增,造成服務器性能下降,如果反應時間較長,甚至服務器死機,導致服務器中斷。在Linux環(huán)境下搭建Vritual Server服務可以改善系統(tǒng)瓶頸的缺陷,并為提供多種(http、ftp、online game等)負載平衡
【關(guān)鍵詞】服務器負載 LVS均衡
一、Linux Vritual Server
LVS是Linux Virtual Server的簡寫,Linux虛擬服務器,是一個虛擬的服務器集群系統(tǒng)。本項目在1998年5月由章文嵩博士成立,是中國國內(nèi)最早出現(xiàn)的自由軟件項目之一。使用集群技術(shù)和Linux操作系統(tǒng)實現(xiàn)一個高性能、高可用的服務器,很好的可伸縮性(Scalability)
很好的可靠性(Reliability),很好的可管理性(Manageability)。
二、負載均衡
可伸縮網(wǎng)絡服務的幾種結(jié)構(gòu),它們都需要一個前端的負載調(diào)度器(或者多個進行主從備份)。我們先分析實現(xiàn)虛擬網(wǎng)絡服務的主要技術(shù),指出IP負載均衡技術(shù)是在負載調(diào)度器的實現(xiàn)技術(shù)中效率最高的。在已有的IP負載均衡技術(shù)中,主要有通過網(wǎng)絡地址轉(zhuǎn)換(Network Address Translation)將一組服務器構(gòu)成一個高性能的、高可用的虛擬服務器,我們稱之為VS/NAT技術(shù)(Virtual Server via Network Address Translation)。在分析VS/NAT的缺點和網(wǎng)絡服務的非對稱性的基礎上,我們提出了通過IP隧道實現(xiàn)虛擬服務器的方法VS/TUN (Virtual Server via IP Tunneling),和通過直接路由實現(xiàn)虛擬服務器的方法VS/DR(Virtual Server via Direct Routing),它們可以極大地提高系統(tǒng)的伸縮性。VS/NAT、VS/TUN和VS/DR技術(shù)是LVS集群中實現(xiàn)的三種IP負載均衡技術(shù)。
(1)VS/NAT
通過網(wǎng)絡地址轉(zhuǎn)換,調(diào)度器重寫請求報文的目標地址,根據(jù)預設的調(diào)度算法,將請求分派給后端的真實服務器;真實服務器的響應報文通過調(diào)度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調(diào)度過程。
(2)VS/TUN
采用NAT技術(shù)時,由于請求和響應報文都必須經(jīng)過調(diào)度器地址重寫,當客戶請求越來越多時,調(diào)度器的處理能力將成為瓶頸。為了解決這個問題,調(diào)度器把請求報文通過IP隧道轉(zhuǎn)發(fā)至真實服務器,而真實服務器將響應直接返回給客戶,所以調(diào)度器只處理請求報文。由于一般網(wǎng)絡服務應答比請求報文大許多,采用 VS/TUN技術(shù)后,集群系統(tǒng)的最大吞吐量可以提高10倍。
(3) VS/DR
VS/DR通過改寫請求報文的MAC地址,將請求發(fā)送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術(shù)一樣,VS/DR技術(shù)可極大地提高集群系統(tǒng)的伸縮性。這種方法沒有IP隧道的開銷,對集群中的真實服務器也沒有必須支持IP隧道協(xié)議的要求,但是要求調(diào)度器與真實服務器都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。
三、負載調(diào)度算法
針對不同的網(wǎng)絡服務需求和服務器配置,IPVS調(diào)度器實現(xiàn)了以下幾種種負載調(diào)度算法:
(1)輪叫(Round Robin)
調(diào)度器通過”輪叫”調(diào)度算法將外部請求按順序輪流分配到集群中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數(shù)和系統(tǒng)負載。
(2)加權(quán)輪叫(Weighted Round Robin)
調(diào)度器通過”加權(quán)輪叫”調(diào)度算法根據(jù)真實服務器的不同處理能力來調(diào)度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調(diào)度器可以自動問詢真實服務器的負載情況,并動態(tài)地調(diào)整其權(quán)值。
(3)最少鏈接(Least Connections)
調(diào)度器通過”最少連接”調(diào)度算法動態(tài)地將網(wǎng)絡請求調(diào)度到已建立的鏈接數(shù)最少的服務器上。如果集群系統(tǒng)的真實服務器具有相近的系統(tǒng)性能,采用”最小連接”調(diào)度算法可以較好地均衡負載。
(4)加權(quán)最少鏈接(Weighted Least Connections)
在集群系統(tǒng)中的服務器性能差異較大的情況下,調(diào)度器采用”加權(quán)最少鏈接”調(diào)度算法優(yōu)化負載均衡性能,具有較高權(quán)值的服務器將承受較大比例的活動連接負載。調(diào)度器可以自動問詢真實服務器的負載情況,并動態(tài)地調(diào)整其權(quán)值。
(5)基于局部性的最少鏈接(Locality-Based Least Connections)
“基于局部性的最少鏈接” 調(diào)度算法是針對目標IP地址的負載均衡,目前主要用于Cache集群系統(tǒng)。該算法根據(jù)請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發(fā)送到該服務器;若服務器不存在,或者該服務器超載且有服務器處于一半的工作負載,則用”最少鏈接”的原則選出一個可用的服務 器,將請求發(fā)送到該服務器。
(6)目標地址散列(Destination Hashing)
“目標地址散列”調(diào)度算法根據(jù)請求的目標IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發(fā)送到該服務器,否則返回空。
(7)源地址散列(Source Hashing)
“源地址散列”調(diào)度算法根據(jù)請求的源IP地址,作為散列鍵(Hash Key)從靜態(tài)分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發(fā)送到該服務器,否則返回空
四、總結(jié)
LVS集群軟件是按GPL(GNU Public License)許可證發(fā)行的自由軟件,因此,使用者可以得到軟件的源代碼,并且可以根據(jù)自己的需要進行各種修改,但是修改必須是以GPL方式發(fā)行。
參考文獻:
[1] Linux Virtual Server架設 凌志軍 電子工業(yè)出版社
[2] Linux負載均衡軟件LVS http://www.linuxvirtualserver.org