LVS基本介紹

一、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.

二、  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,詳述如下:

    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;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章