LVS基本介紹

1、LVS基本概念
前端

      LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器。這是一個由章文嵩博士發起的一個開源項目,它的官方網站是http://www.linuxvirtualserver.org/.如今LVS已是Linux內核標準的一部分。使用LVS能夠達到的技術目標是:經過LVS達到的負載均衡技術和Linux操做系統實現一個高性能高可用的Linux服務器羣集,它具備良好的可靠性,可拓展性和可操做性。從而以低廉的成本實現最優的性能。       LVS從1998年開始,發展到如今已是一個比較成熟的項目了。利用LVS技術能夠實現高性能,高可壓縮的網路服務,例如WWW服務,FTP服務,MAIL服務等。比較著名的就是www.linux.com以及www.real.com. linux

2、  LVS集羣的特色算法

  IP負載均衡與負載調度算法後端

1.IP負載均衡技術服務器

負載均衡技術有不少實現方案,有基於DNS域名輪流解析的方法、有基於客戶端調度訪問的方法、有基於應用層系統負載的調度方法,還有基於IP地址的調度方法,在這些負載調度算法中,執行效率最高的是IP負載均衡技術。網絡

LVS 的IP負載均衡技術是經過IPVS模塊來實現的,IPVS是LVS集羣系統的核心軟件,它的主要做用是:安裝在Director Server上,同時在Director Server上虛擬出一個IP地址,用戶必須經過這個虛擬的IP地址訪問服務。這個虛擬IP通常稱爲LVS的VIP,即Virtual IP。訪問的請求首先通過VIP到達負載調度器,而後由負載調度器從Real Server列表中選取一個服務節點響應用戶的請求。負載均衡

當用戶的請求到達負載調度器後,調度器如何將請求發送到提供服務的Real Server節點,而Real Server節點如何返回數據給用戶,是IPVS實現的重點技術,IPVS實現負載均衡機制有三種,分別是NAT、TUN、FULLNAT和DR,詳述以下:ide

    lvs-nat:性能

多目標IP地址的DNAT,經過將請求報文中的目標地址和目標端口修改成某個利用調度算法挑選出來的後端RS的RIP和PORT的過程實現的轉發;網站

注意下列幾個問題:

1.RIP和DIP必須在同一網段,而且應該是私有IP地址;RS的網關應該指向DIP;

2.請求報文和響應報文都必須通過Director轉發,Director易於成爲系統性能瓶頸並引起單點故障;

3.能夠實現端口重定向;CIP向VIP發送請求的端口號能夠與後端的RIP所提供服務的服務端口不一樣;

4.VS必須是Linux系統,RS能夠是任意操做系統;


    lvs-dr:默認類型

dr:Direct Routing,直接路由;

             經過爲請求報文從新封裝一個數據鏈路層首部(MAC地址)進行報文轉發;從新封裝以後的報文的源MAC地址是DIP所在網絡接口的MAC地址;目的MAC地址是某個利用調度算法挑選出來的後端RS的RIP所在接口的MAC地址;源IP地址和源PORT,以及目的IP地址和目的PORT,在整個報文轉發過程當中保持不變;


注意如下幾個問題:

1.確保前端路由器可以將目標IP地址爲VIP的報文發往VS(Director);

1) 在路由器上靜態綁定IP地址和MAC地址的映射關係;

2) 在RS上使用arptables;

3) 在RS上修改內核參數限制ARP的通告和對ARP請求的應答;

arp_announce

arp_ignore


2.RS的RIP能夠是私有地址也能夠是公有地址,RIP和DIP應該在同一邏輯網絡;

3.請求報文必需要通過Director,可是全部的響應報文不須要通過Director直接經過路由轉發給客戶端便可;

4.不支持端口重定向;

5.RS必須是Linux操做系統;

6.RS上必須配置RIP和VIP,而且VIP應該配置在lo接口的lable上;


     lvs-tun:tunnel,隧道;

不修改請求報文的IP首部(源IP爲CIP,目的IP爲VIP),而是在原有的IP報文的封裝格式以外再次封裝一個IP首部(源IP爲DIP,目的IP爲RIP),將從新封裝的報文發往使用調度算法挑選出的後端RS上;


注意如下幾個問題:

1.CIP,VIP,DIP,RIP都應該是公有IP地址;

2.RS的網關沒法指向DIP,所以響應報文不會通過Director轉發,而是直接發往CIP;

3.不支持端口重定向;

4.RS必須支持隧道協議;

5.RS上必須配置RIP和VIP;

      lvs-fullnat:

非標準類型;

經過同時修改請求報文的源IP地址和目的IP地址實現報文轉發;

CIP --> DIP

VIP --> RIP


注意如下幾個問題:

1.VIP是公有地址,DIP和RIP是私有地址,且DIP和RIP能夠不在同一網段;

2.RS對收到的請求報文的響應報文的目的地址是DIP,因此請求報文和響應報文都必須通過Director;

3.支持端口重定向;

4.此類型默認不支持;

2.負載調度算法

    

    根據lvs在調度時是否考慮各RS當前的負載狀態,能夠將調度算法分爲兩類:

靜態算法:根據算法自己的特色進行調度,注重起點公平;

RR:RoundRobin,輪詢;

                WRR:Weighted RR,加權輪詢;

                SH:Source Hashing,源地址哈希,未來自於同一個IP地址的請求始終發日後端第一次被挑中的RS,從而但是實現會話綁定;


DH:Destination Hashing,目的地址哈希,將發往同一個目標地址的請求,始終發送至後端第一次被挑中的RS,通常用於正向代理服務器集羣;


        動態算法:主要根據每一個RS當前的負載狀態進度調度,注重結果公平;

後端RS的負載,用Overhead表示;


LC:least connections,最少鏈接數;

鏈接有兩種:一種是active connection;一種是inavtive connection;

Overhead=activeconnections*256+inactiveconnections


注意:第一次調度時,按照在ipvsadm中配置的順序自上而下進行分配;


WLC:Weighted LC,加權最小鏈接;(默認算法)

Overhead=(activeconnections*256+inactiveconnections)/weight


        注意:第一次調度時,按照在ipvsadm中配置的順序自上而下進行分配;權重在第一次調度時不發揮做用;


SED:Shortest Expection Delay,最短時間望延遲;

Overhead=(activeconnections+1)*256/weight


注意:SED能夠解決起點不公問題,可是在權重差距比較大時候,可能會致使不公平;


NQ:Never Queue,改進版的SED算法,首次調度時,根據後端RS的權重依次爲每臺RS分配一個鏈接;而後再按照SED算法調度;必然會保證後端每臺RS至少有一個activeconnection;


LBLC:Locality-Based Least Connections,基於本地的最少鏈接,動態的DH算法;

LBLCR:LBLC with Replication,帶有複製功能的LBLC;

相關文章
相關標籤/搜索