1. 程式人生 > >001.LVS簡介及演算法

001.LVS簡介及演算法

一 LVS簡介

1.1 LVS介紹

LVS是linux virtual server的簡寫linux虛擬伺服器,是一個虛擬的伺服器集群系統,可以再unix/linux平臺下實現負載均衡叢集功能。 使用LVS需要達到的目標是:通過LVS提供的負載均衡技術和Linux作業系統實現一個高效能、高可用的伺服器群集,它具有良好的可靠性,可擴充套件性和可操作性,從而以低廉的成本實現最優的服務效能。

1.2 LVS主要作用

作用:提供一種廉價、有效、透明的方法,來擴充套件網路裝置和伺服器的負載頻寬、增加吞吐量,加強網路資料處理能力、提高網路的靈活性和可用性。 1)把單臺計算機無法承受的大規模的併發訪問或資料流量分擔到多臺節點裝置上分別處理,減少使用者等待響應的時間,提升使用者體驗。
2)單個重負載的運算分擔到多臺節點裝置上做並行處理,每個節點裝置處理結束後,將結果彙總,返回給使用者,系統處理能力得到大幅度提高。 3)7*24小時的服務保證,任意一個或多個裝置節點裝置宕機,不能影響到業務。在負載均衡叢集中,所有計算機節點都應該提供相同的服務,叢集負載均衡獲取所有對該服務的如站請求。

1.3 LVS體系結構

001 LVS集群系統由三部分組成:最前端的負載均衡層(Load Balancer)、中間的伺服器群組層(Server Array)、最底層的資料儲存共享層(Shared Storage)。 負載均衡層:位於整個叢集最前端,由一臺或多臺負載排程器(Director Server)組成,LVS模組就安裝在負載排程器上,其主要作用類似於路由器,具有完成LVS功能所設定的路由表,從而把使用者的請求傳送到伺服器群組層的 應用伺服器(Real Server)上。
伺服器群組層:由一組實際執行應用服務的機器組成,Real Server可以是Web伺服器、Mail伺服器、FTP伺服器、DNS伺服器的一個或多個,每個Real Server之間通過高速LAN或分部不同區域的WAN連線起來。實際環境中,Director Server也可以同時兼任Real Server角色。 共享儲存層:為所有Real Server提供共享儲存空間和內容一致性的儲存區域,在物理上一般由磁碟陣列裝置組成。為了內容的一致性,一般可通過NFS共享儲存,也支援GFS、OCFS2等檔案系統。

二 LVS工作模式

  1. VS/NAT模式(Network address translation)
  2. VS/TUN模式(tunneling)
  3. DR模式(Direct routing)

2.1 VS/NAT-NAT模式:網路地址轉換Virtualserver via Network address translation

通過網路地址轉換的方法來實現排程。 首先排程器(LB)接收到客戶的請求資料包時,根據排程演算法決定將請求傳送給哪個後端的真實伺服器(RS)。然後排程就把客戶端傳送的請求資料包的目標IP地址及埠改成後端真實伺服器的IP地址(RIP),則真實伺服器(RS)就能夠接收到客戶的請求資料包了。真實伺服器響應完請求後,檢視預設路由,把響應後的資料包傳送給LB,LB再接收到響應包後,把包的源地址改成虛擬地址(VIP)然後傳送回給客戶端。 注意: 請求的目的IP為VIP; NAT模式下我們需要把RS的預設路由設定為LB伺服器。 排程過程IP包詳細圖: 002 原理圖簡述:
  1. 客戶端請求資料,目標IP為VIP。
  2. 請求資料到達LB伺服器,LB根據排程演算法將目的地址修改為RIP地址及對應埠(此RIP地址根據排程演算法得出)並在連線HASH表中記錄下這個連線。
  3. 資料包從LB伺服器到達RS伺服器webserver,然後webserver進行響應。Webserver的閘道器必須是LB,然後將資料返回給LB伺服器。
  4. 收到RS的返回後的資料,根據連線HASH表修改源地址VIP,目標地址修改CIP,及對應埠80.然後資料就從LB出發到達客戶端。
  5. 客戶端收到的就只能看到VIP\DIP資訊。
NAT模式優缺點:
  1. NAT技術請求報文和響應報文都需要經過LB進行地址改寫,因此網站訪問量比較大的時候LB負載均衡排程器有比較大的瓶頸,一般要求最多隻能10-20臺節點;
  2. 只需要在LB上配置一個公網IP地址就可以了;
  3. 每臺內部的節點伺服器的閘道器地址必須是排程器LB的內網地址;
  4. NAT模式支援對IP地址和埠進行轉換,即使用者請求的埠和真實伺服器的埠可以不一致。

2.2 TUN模式:virtual server via ip tunneling模式

採用NAT模式時,由於請求和響應報文必須通過排程器地址重寫,當客戶請求過多時,排程器處理能力將成為瓶頸。為了解決這個問題,排程器把請求的報文通過IP隧道轉發到真實伺服器。真實伺服器將響應處理後的資料直接返回給客戶端。即排程器就只處理請求入站報文,由於一般網路服務應答資料比請求報文大很多,採用VS/TUN模式後,集群系統的最大吞吐量可以提高10倍。 注意:RS節點伺服器需要在本地迴環介面配置VIP。 VS/TUN排程過程IP包詳細圖: 003 原理圖過程簡述:
  1. 客戶請求資料包,目標地址VIP傳送到LB上。
  2. LB接收到客戶請求包,進行IP Tunnel封裝,即在原有的包頭加上IP Tunnel的包頭。
  3. RS節點伺服器根據IP Tunnel包頭資訊(即邏輯上的隱形隧道,只有LB和RS之間匹配)收到請求包,然後解開IP Tunnel包頭資訊,得到客戶的請求包並進行響應處理。
  4. 響應處理完畢之後,RS伺服器使用RS出公網的線路,將響應資料包傳送給客戶端,源IP地址依舊為VIP地址。
TUN模式優缺點:
  1. VS/TUN模式和NAT模式不同的是,它在LB和RS之間的傳輸不用改寫IP地址。
  2. 將客戶請求包封裝在一個IP tunnel裡面,然後傳送給RS節點伺服器,節點伺服器接收到之後解開IP tunnel後,進行響應處理。
  3. 響應報文直接通過RS的外網地址傳送給客戶不用經過LB伺服器。

2.3 DR模式:直接路由模式,Virtual server via direct routing

DR模式是通過改寫請求報文的目標MAC地址,將請求發給真實伺服器,而真實伺服器響應後的處理結果直接返回給客戶端使用者。同TUN模式一樣,DR模式可以極大的提高集群系統的伸縮性。而且DR模式沒有IP隧道的開銷,對叢集中的真實伺服器也沒有必須支援IP隧道協議的要求。但是要求排程器LB與真實伺服器RS都有一塊網絡卡連線到同一物理網段上,必須在同一個區域網環境。 DR模式是網際網路使用比較多的一種模式。 DR模式排程過程IP包詳細圖: 004 DR模式原理過程簡述:
  1. 客戶請求資料包,目標地址VIP傳送到LB上。
  2. LB根據各個真實伺服器的負載情況,連線數多少等,動態地選擇一臺伺服器,不修改目標IP地址和目標埠,也不封裝IP報文,而是將請求報文的資料幀的目標MAC地址改為真實伺服器的MAC地址。
  3. 將修改的資料幀在伺服器組的區域網上傳送,因為資料幀的MAC地址是真實伺服器的MAC地址,並且在同一個區域網。那麼根據區域網的通訊原理,RS是一定能夠收到由LB發出的資料包。
  4. 真實伺服器接收到請求資料包,其IP包頭的目標IP是VIP(RS的lo介面也必須配置此IP),處理之後直接將響應資料包通過自身的網路傳送至客戶,源IP地址為VIP。
DR模式優缺點:
1、通過在排程器LB上修改資料包的目的MAC地址實現轉發,源地址仍然是CIP,目的地址仍然是VIP地址。 2、請求的報文經過排程器,而RS響應處理後的報文無需經過排程器LB,因此併發訪問量大時使用效率很高(和NAT模式比)。 3、DR模式是通過MAC地址改寫機制實現轉發,因此所有RS節點和排程器LB只能在一個局域網裡面。 4、RS主機需要繫結VIP地址在LO介面上,並且需要配置ARP抑制。 5、RS節點的預設閘道器不需要配置成LB,而是直接配置為上級路由的閘道器,能讓RS直接和使用者網路互通即可。 6、由於DR模式的排程器僅做MAC地址的改寫,所以排程器LB就不能改寫目標埠,那麼RS伺服器就得使用和VIP相同的埠提供服務。

三 排程演算法

3.1 演算法簡介

Lvs的排程演算法決定了如何在叢集節點之間分佈工作負荷。當director排程器收到來自客戶端訪問VIP的叢集服務的入站請求時,director排程器必須決定哪個叢集節點應該處理請求。 Director排程器用的排程方法基本分為兩類: 固定排程演算法:rr,wrr,dh,sh 動態排程演算法:wlc,lc,lblc,lblcr rr:輪詢演算法,它將請求依次分配給不同的rs節點,也就是RS節點中均攤分配。這種演算法簡單,但只適合於RS所有節點處理效能接近的情況。 wrr:加權輪訓排程,它將依據不同RS的權值分配任務。權值較高的RS將優先獲得任務,並且分配到的連線數將比權值低的RS更多。相同權值的RS得到相同數目的連線數。 dh:目的地址雜湊排程(destination hashing)以目的地址為關鍵字查詢一個靜態hash表來獲得所需RS。 sh:源地址雜湊排程(source hashing)以源地址為關鍵字查詢一個靜態hash表來獲得需要的RS。   wlc:加權最小連線數排程,假設各臺RS的權值依次為Wi,當前tcp連線數依次為Ti,依次去Ti/Wi為最小的RS作為下一個分配的RS lc:最小連線數排程(least-connection),IPVS表儲存了所有活動的連線。LB會比較將連線請求傳送到當前連線最少的RS。 lblc:基於地址的最小連線數排程(locality-based least-connection):將來自同一個目的地址的請求分配給同一臺RS,此時這臺伺服器是尚未滿負荷的。否則就將這個請求分配給連線數最小的RS,並以它作為下一次分配的首先考慮。

3.2 排程演算法常用場景

  •       一般的網路服務,如http,mail,mysql等常用的LVS排程演算法為:
a.基本輪詢排程rr b.加權最小連線排程wlc c.加權輪詢排程wrc
  • 基於區域性性的最小連線lblc和帶複製的給予區域性性最小連線lblcr主要適用於web cache和DB cache
  • 源地址雜湊排程SH和目標地址雜湊排程DH可以結合使用在防火牆叢集中,可以保證整個系統的出入口唯一。
參考:http://www.it165.net/admin/html/201401/2248.html 更多LVS知識參考官網: http://www.linuxvirtualserver.org/zh/lvs1.html 專案介紹 http://www.linuxvirtualserver.org/zh/lvs2.html 體系結構 http://www.linuxvirtualserver.org/zh/lvs3.html 工作模式 http://www.linuxvirtualserver.org/zh/lvs4.html 演算法排程