LVS基礎(chǔ)概念解析

1. LVS 簡介

1.1 LVS是啥

LVS的英文全稱是Linux Virtual Server拧篮,即Linux虛擬服務(wù)器夸浅。它是我們國家的章文嵩博士的一個開源項目。在linux內(nèi)核2.6中,它已經(jīng)成為內(nèi)核的一部分苛蒲,在此之前的內(nèi)核版本則需要重新編譯內(nèi)核。

1.2 LVS能干什么

LVS主要用于多服務(wù)器的負載均衡绿满。它工作在網(wǎng)絡(luò)4層臂外,可以實現(xiàn)高性能,高可用的服務(wù)器集群。它廉價漏健,可把許多低性能的服務(wù)器組合在一起形成一個超級服務(wù)器嚎货。它易用,配置非常簡單蔫浆,且有多種負載均衡的方法殖属。它穩(wěn)定可靠,即使在集群的服務(wù)器中某臺服務(wù)器無法正常工作瓦盛,也不影響整體效果洗显。另外可擴展性也非常好。


2. Linux Virtual Server 項目

針對高可伸縮原环、高可用網(wǎng)絡(luò)服務(wù)的需求,我們給出了基于IP層和基于內(nèi)容請求分發(fā)的負載平衡調(diào)度解決方法挠唆,并在Linux內(nèi)核中實現(xiàn)了這些方法,將一組服務(wù)器構(gòu)成一個實現(xiàn)可伸縮的扮念、高可用網(wǎng)絡(luò)服務(wù)的虛擬服務(wù)器损搬。

虛擬服務(wù)器的體系結(jié)構(gòu)如下圖所示,一組服務(wù)器通過高速的局域網(wǎng)或者地理分布的廣域網(wǎng)相互連接,在它們的前端有一個負載調(diào)度器(Load Balancer)柜与。負載調(diào)度器能無縫地將網(wǎng)絡(luò)請求調(diào)度到真實服務(wù)器上巧勤,從而使得服務(wù)器集群的結(jié)構(gòu)對客戶是透明的,客戶訪問集群系統(tǒng)提供的網(wǎng)絡(luò)服務(wù)就像訪問一臺高性能弄匕、高可用的服務(wù)器一樣颅悉。由于我們的負載調(diào)度技術(shù)是在Linux內(nèi)核中實現(xiàn)的,我們稱之為Linux虛擬服務(wù)器(Linux Virtual Server) 迁匠。


3. Linux Virtual Server 項目

Linux Virtual Server項目的目標(biāo)∶使用集群技術(shù)和Linux操作系統(tǒng)實現(xiàn)一個高性能剩瓶、高可用的服務(wù)器,它具有很好的可伸縮性(Scalability)城丧、可靠性(Reliability)和可管理性(Manageability) 延曙。

Linux Virtual Server框架

目前,LVS項目已提供了一個實現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的Linux Virtual Server框架亡哄,如上圖所示枝缔。

  • IPVS:提供了含有三種IP負載均衡技術(shù)的IP虛擬服務(wù)器軟件。
  • KTCPVS:基于內(nèi)容請求分發(fā)的內(nèi)核Layer-7交換機蚊惯。
  • Cluster Management:集群管理軟件愿卸。

可以利用LVS框架實現(xiàn)高可伸縮的、高可用的Web截型、Cache趴荸、Mal和Meala寺網(wǎng)紿漢務(wù);在此基礎(chǔ)上,可以開發(fā)支持龐大用戶數(shù)的宦焦、高可伸縮的发钝、高可用的電子商務(wù)應(yīng)用顿涣。


4. 網(wǎng)絡(luò)分層

4.1 網(wǎng)絡(luò)7層

7層是指OSI七層協(xié)議模型,主要是:應(yīng)用層(Application)笼平、表示層(Presentation)园骆、會話層(Session)舔痪、傳輸層(Transport) 寓调、網(wǎng)絡(luò)層(Network)、數(shù)據(jù)鏈路層(Data Link)锄码、物理層(Physical)夺英。Nginx工作在7層網(wǎng)絡(luò)模型下。

4.2 網(wǎng)絡(luò)5層

5層只是OSI和TCP/IP的綜合滋捶,是業(yè)界產(chǎn)生出來的非官方協(xié)議模型,但是很多具體的應(yīng)用痛悯。實際應(yīng)用還是TCP/IP的四層結(jié)構(gòu)。為了方便可以把下兩層稱為網(wǎng)絡(luò)接口層重窟。五層體系結(jié)構(gòu)包括:應(yīng)用層载萌、運輸層、網(wǎng)絡(luò)層巡扇、數(shù)據(jù)鏈路層和物理層扭仁。

4.3 網(wǎng)絡(luò)4層

4層是指TCP/IP四層模型,主要包括:應(yīng)用層厅翔、運輸層乖坠、網(wǎng)際層和網(wǎng)絡(luò)接口層。

LVS工作在4層網(wǎng)絡(luò)模型下刀闷。


5. IP虛擬服務(wù)器軟件IPVS

在調(diào)度器的實現(xiàn)技術(shù)中熊泵,IP負載均衡技術(shù)是效率最高的。IPVS軟件實現(xiàn)了三種IP負載均衡技術(shù)甸昏,它們的大致原理如下:

Virtual Server via Direct Routing (VS/DR)
VS/DR通過改寫請求報文的MAC地址顽分,將請求發(fā)送到真實服務(wù)器,而真實服務(wù)器將響應(yīng)直接返回給客戶施蜜。同VS/TUN技術(shù)一樣卒蘸,VS/DR技術(shù)可極大地提高集群系統(tǒng)的伸縮性。這種方法沒有IP隧道的開銷花墩,對集群中的真實服務(wù)器也沒有必須支持IP隧道協(xié)議的要求悬秉,但是要求調(diào)度器與真實服務(wù)器都有一塊網(wǎng)卡連在同一物理網(wǎng)段上。

Virtual Server via Network Address Translation (VS/NAT)
通過網(wǎng)絡(luò)地址轉(zhuǎn)換冰蘑,調(diào)度器重寫請求報文的目標(biāo)地址和泌,根據(jù)預(yù)設(shè)的調(diào)度算法,將請求分派給后端的真實服務(wù)器;真實服務(wù)器的響應(yīng)報文通過調(diào)度器時祠肥,報文的源地址被重寫武氓,再返回給客戶,完成整個負載調(diào)度過程。

Virtual Server via lP Tunneling (VS/TUN)
采用NAT技術(shù)時县恕,由于請求和響應(yīng)報文都必須經(jīng)過調(diào)度器地址重寫东羹,當(dāng)客戶請求越來越多時,調(diào)度器的處理能力將成為瓶頸忠烛。為了解決這個問題属提,調(diào)度器把請求報文通過IP隧道轉(zhuǎn)發(fā)至真實服務(wù)器,而真實服務(wù)器將響應(yīng)直接返回給客戶美尸,所以調(diào)度器只處理請求報文冤议。由于一般網(wǎng)絡(luò)服務(wù)應(yīng)答比請求報文大許多,采用VS/TUN技術(shù)后师坎,集群系統(tǒng)的最大吞吐量可以提高10倍恕酸。


6. IPVS調(diào)度算法

針對不同的網(wǎng)絡(luò)服務(wù)需求和服務(wù)器配置,IPVS調(diào)度器實現(xiàn)了如下八種負載調(diào)度算法:

  • 輪叫(Round Robin)
  • 加權(quán)輪叫(Weighted Round Robin)
  • 最少鏈接(Least Connections)
  • 加權(quán)最少鏈接(Weighted Least Connections)
  • 基于局部性的最少鏈接(Locality-Based Least Connections)
  • 帶復(fù)制的基于局部性最少鏈接(Locality-Based Least Connections with Replication)
  • 目標(biāo)地址散列(Destination Hashing)
  • 源地址散列(Source Hashing)

7. 內(nèi)核Layer-7 交換機KTCPVS

在基于IP負載調(diào)度技術(shù)中胯陋,當(dāng)一個TCP連接的初始SYN報文到達時蕊温,調(diào)度器就選擇一臺服務(wù)器,將報文轉(zhuǎn)發(fā)給它遏乔。此后通過查發(fā)報文的IP和TCP報文頭地址义矛,保證此連接的后繼報文被轉(zhuǎn)發(fā)到該服務(wù)器。這樣按灶,IPVS無法檢查到請求的內(nèi)容再選擇服務(wù)器症革,這就要求后端服務(wù)器組提供相同的服務(wù),不管請求被發(fā)送到哪一臺服務(wù)器鸯旁,返回結(jié)果都是一樣的噪矛。但是,在有些應(yīng)用中后端服務(wù)器功能不一铺罢,有的提供HTML文檔艇挨,有的提供圖片,有的提供CGl韭赘,這就需要基于內(nèi)容的調(diào)度(Content-Based Scheduling)缩滨。

由于用戶空間TCP Gateway的開銷太大,我們提出在操作系統(tǒng)的內(nèi)核中實現(xiàn)Layer-7交換方法泉瞻,來避免用戶空間與核心空間的切換和內(nèi)存復(fù)制的開銷脉漏。在Linux操作系統(tǒng)的內(nèi)核中,我們實現(xiàn)了Layer-7交換袖牙,稱之為KTCPVS (Kernel TCP Virtual Server) 侧巨。

雖然應(yīng)用層交換處理復(fù)雜,它的伸縮性有限鞭达,但應(yīng)用層交換帶來以下好處:

  • 相同頁面的請求被發(fā)送到同一服務(wù)器,可以提高單臺服務(wù)器的Cache命中率司忱。

  • 一些研究表明WEB訪問流中存在局部性皇忿。Layer-7交換可以充分利用訪問的局部性,將相同類型的請求發(fā)送到同一臺服務(wù)器,使得每臺服務(wù)器收到的請求具有更好的相似性,可進一步提高單臺服務(wù)器的Cache命中率。

  • 后端服務(wù)器可運行不同類型的服務(wù),如文檔服務(wù)坦仍,圖片服務(wù)鳍烁,CGI服務(wù)和數(shù)據(jù)庫服務(wù)等。


8. LVS集群特點

8.1 功能

1.有實現(xiàn)三種IP負載均衡技術(shù)和八種連接調(diào)度算法的IPVS軟件繁扎。
2.在IPVS內(nèi)部實現(xiàn)上幔荒,采用了高效的Hash函數(shù)和垃圾回收機制,能正確處理所調(diào)度報文相關(guān)的ICMP消息锻离。
3.虛擬服務(wù)的設(shè)置數(shù)目沒有限制铺峭,每個虛擬服務(wù)有自己的服務(wù)器集.
4.它支持持久的虛擬服務(wù)(如HTTP Cookie和HTTPS等需要該功能的支持),并提供詳盡的統(tǒng)計數(shù)據(jù)汽纠,如連接的處理速率和報文的流量等。
5.針對大規(guī)模拒絕服務(wù)(Deny of Service)攻擊傀履,實現(xiàn)了三種防衛(wèi)策略虱朵。
6.有基于內(nèi)容請求分發(fā)的應(yīng)用層交換軟件KTCPVS,它也是在Linux內(nèi)核中實現(xiàn).
7.有相關(guān)的集群管理軟件對資源進行監(jiān)測钓账,能及時將故障屏蔽碴犬,實現(xiàn)系統(tǒng)的高可用性。8.主、從調(diào)度器能周期性地進行狀態(tài)同步,從而實現(xiàn)更高的可用性锁荔。

8.2 適用性

后端服務(wù)器可運行任何支持TCP/IP的操作系統(tǒng)滩届,包括Linux,各種Unix(如FreeBSD优妙、Sun Solaris.HP Unix等),Mac/OS和Windows NT/2000等。負載調(diào)度器能夠支持絕大多數(shù)的TCP和UDP協(xié)議。

8.3 性能

LVS服務(wù)器集群系統(tǒng)具有良好的伸縮性跳纳,可支持幾百萬個并發(fā)連接。配置100M網(wǎng)卡贪嫂,采用VS/TUN或VS/DR調(diào)度技術(shù)寺庄,集群系統(tǒng)的吞吐量可高達1Gbits/s;如配置千兆網(wǎng)卡,則系統(tǒng)的最大吞吐量可接近10Gbits/s力崇。

8.4 可靠性

LVS服務(wù)器集群軟件已經(jīng)在很多大型的斗塘、關(guān)鍵性的站點得到很好的應(yīng)用,所以它的可靠性在真實應(yīng)用得到很好的證實亮靴。有很多調(diào)度器運行一年多馍盟,未作一次重啟動。

8.5 軟件許可證

LVS集群軟件是按GPL (GNU Public License)許可證發(fā)行的自由軟件台猴,這意味著你可以得到軟件的源代碼朽合,有權(quán)對其進行修改俱两,但必須保證你的修改也是以GPL方式發(fā)行。


9. LVS與Nginx對比


如果覺得有收獲曹步,歡迎點贊和評論宪彩,更多知識,請點擊關(guān)注查看我的主頁信息哦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讲婚,一起剝皮案震驚了整個濱河市尿孔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筹麸,老刑警劉巖活合,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異物赶,居然都是意外死亡白指,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門酵紫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來告嘲,“玉大人,你說我怎么就攤上這事奖地¢匣#” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵参歹,是天一觀的道長仰楚。 經(jīng)常有香客問我,道長犬庇,這世上最難降的妖魔是什么僧界? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮械筛,結(jié)果婚禮上捎泻,老公的妹妹穿的比我還像新娘。我一直安慰自己埋哟,他們只是感情好笆豁,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赤赊,像睡著了一般闯狱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抛计,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天哄孤,我揣著相機與錄音,去河邊找鬼吹截。 笑死瘦陈,一個胖子當(dāng)著我的面吹牛凝危,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晨逝,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛾默,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捉貌?” 一聲冷哼從身側(cè)響起支鸡,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趁窃,沒想到半個月后牧挣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡醒陆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年瀑构,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片统求。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡检碗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出码邻,到底是詐尸還是另有隱情,我是刑警寧澤另假,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布像屋,位于F島的核電站,受9級特大地震影響边篮,放射性物質(zhì)發(fā)生泄漏己莺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一戈轿、第九天 我趴在偏房一處隱蔽的房頂上張望凌受。 院中可真熱鬧,春花似錦思杯、人聲如沸胜蛉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽誊册。三九已至,卻和暖如春暖璧,著一層夾襖步出監(jiān)牢的瞬間案怯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工澎办, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘲碱,地道東北人金砍。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像麦锯,于是被迫代替她去往敵國和親恕稠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容