LVS集群基礎

LVS簡介

Internet的快速增長使多媒體網(wǎng)絡服務器面對的訪問數(shù)量快速增加云茸,服務器需要具備提供大量并發(fā)訪問服務的能力,因此對于大負載的服務器來講谤饭,CPU标捺、I/O處理能力很快會成為瓶頸。由于單臺服務器的性能總是有限的揉抵,簡單的提高硬件性能并不能真正解決這個問題亡容。為此,必須采用多服務器和負載均衡技術才能滿足大量并發(fā)訪問的需要冤今。Linux 虛擬服務器(Linux Virtual Servers,LVS) 使用負載均衡技術將多臺服務器組成一個虛擬服務器闺兢。它為適應快速增長的網(wǎng)絡訪問需求提供了一個負載能力易于擴展,而價格低廉的解決方案戏罢。

LVS結構與工作原理

一:LVS的結構

LVS由前端的負載均衡器(Load Balancer屋谭,LB)和后端的真實服務器(Real Server脚囊,RS)群組成。RS間可通過局域網(wǎng)或廣域網(wǎng)連接桐磁。LVS的這種結構對用戶是透明的悔耘,用戶只能看見一臺作為LB的虛擬服務器(Virtual Server),而看不到提供服務的RS群我擂。當用戶的請求發(fā)往虛擬服務器衬以,LB根據(jù)設定的包轉發(fā)策略和負載均衡調度算法將用戶請求轉發(fā)給RS。RS再將用戶請求結果返回給用戶校摩。

二:LVS內核模型

1.當客戶端的請求到達負載均衡器的內核空間時泄鹏,首先會到達PREROUTING鏈。

2.當內核發(fā)現(xiàn)請求數(shù)據(jù)包的目的地址是本機時秧耗,將數(shù)據(jù)包送往INPUT鏈备籽。

3.LVS由用戶空間的ipvsadm和內核空間的IPVS組成,ipvsadm用來定義規(guī)則分井,IPVS利用ipvsadm定義的規(guī)則工作车猬,IPVS工作在INPUT鏈上,當數(shù)據(jù)包到達INPUT鏈時,首先會被IPVS檢查尺锚,如果數(shù)據(jù)包里面的目的地址及端口沒有在規(guī)則里面珠闰,那么這條數(shù)據(jù)包將被放行至用戶空間。

4.如果數(shù)據(jù)包里面的目的地址及端口在規(guī)則里面瘫辩,那么這條數(shù)據(jù)報文將被修改目的地址為事先定義好的后端服務器伏嗜,并送往POSTROUTING鏈。

5.最后經(jīng)由POSTROUTING鏈發(fā)往后端服務器伐厌。

三:LVS的包轉發(fā)模型

1.NAT模型:

①.客戶端將請求發(fā)往前端的負載均衡器承绸,請求報文源地址是CIP(客戶端IP),后面統(tǒng)稱為CIP),目標地址為VIP(負載均衡器前端地址挣轨,后面統(tǒng)稱為VIP)军熏。

②.負載均衡器收到報文后,發(fā)現(xiàn)請求的是在規(guī)則里面存在的地址卷扮,那么它將客戶端請求報文的目標地址改為了后端服務器的RIP地址并將報文根據(jù)算法發(fā)送出去荡澎。

③.報文送到Real Server后,由于報文的目標地址是自己晤锹,所以會響應該請求摩幔,并將響應報文返還給LVS。

④.然后lvs將此報文的源地址修改為本機并發(fā)送給客戶端鞭铆。注意:在NAT模式中或衡,Real Server的網(wǎng)關必須指向LVS,否則報文無法送達客戶端。

2.DR模型:

①.客戶端將請求發(fā)往前端的負載均衡器薇宠,請求報文源地址是CIP,目標地址為VIP艰额。

②.負載均衡器收到報文后澄港,發(fā)現(xiàn)請求的是在規(guī)則里面存在的地址,那么它將客戶端請求報文的源MAC地址改為自己DIP的MAC地址柄沮,目標MAC改為了RIP的MAC地址回梧,并將此包發(fā)送給RS。

③.RS發(fā)現(xiàn)請求報文中的目的MAC是自己祖搓,就會將次報文接收下來狱意,處理完請求報文后,將響應報文通過lo接口送給eth0網(wǎng)卡直接發(fā)送給客戶端拯欧。注意:需要設置lo接口的VIP不能響應本地網(wǎng)絡內的arp請求详囤。

3.TUN模型:

①.客戶端將請求發(fā)往前端的負載均衡器,請求報文源地址是CIP镐作,目標地址為VIP藏姐。

②.負載均衡器收到報文后,發(fā)現(xiàn)請求的是在規(guī)則里面存在的地址该贾,那么它將在客戶端請求報文的首部再封裝一層IP報文,將源地址改為DIP羔杨,目標地址改為RIP,并將此包發(fā)送給RS。

③.RS收到請求報文后杨蛋,會首先拆開第一層封裝,然后發(fā)現(xiàn)里面還有一層IP首部的目標地址是自己lo接口上的VIP兜材,所以會處理次請求報文,并將響應報文通過lo接口送給eth0網(wǎng)卡直接發(fā)送給客戶端逞力。注意:需要設置lo接口的VIP不能在共網(wǎng)上出現(xiàn)曙寡。

四.LVS的調度算法

LVS的調度算法分為靜態(tài)與動態(tài)兩類。

1.靜態(tài)算法(4種):只根據(jù)算法進行調度 而不考慮后端服務器的實際連接情況和負載情況

①.RR:輪叫調度(Round Robin)

調度器通過”輪叫”調度算法將外部請求按順序輪流分配到集群中的真實服務器上寇荧,它均等地對待每一臺服務器卵皂,而不管服務器上實際的連接數(shù)和系統(tǒng)負載?

②.WRR:加權輪叫(Weight RR)
  調度器通過“加權輪叫”調度算法根據(jù)真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量砚亭。調度器可以自動問詢真實服務器的負載情況,并動態(tài)地調整其權值灯变。

③.DH:目標地址散列調度(Destination Hash )
  根據(jù)請求的目標IP地址,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對應的服務器捅膘,若該服務器是可用的且未超載添祸,將請求發(fā)送到該服務器,否則返回空寻仗。

④.SH:源地址 hash(Source Hash)
  源地址散列”調度算法根據(jù)請求的源IP地址刃泌,作為散列鍵(HashKey)從靜態(tài)分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發(fā)送到該服務器耙替,否則返回空?

2.動態(tài)算法(6種):前端的調度器會根據(jù)后端真實服務器的實際連接情況來分配請求

①.LC:最少鏈接(Least Connections)
  調度器通過”最少連接”調度算法動態(tài)地將網(wǎng)絡請求調度到已建立的鏈接數(shù)最少的服務器上亚侠。如果集群系統(tǒng)的真實服務器具有相近的系統(tǒng)性能,采用”最小連接”調度算法可以較好地均衡負載俗扇。

②.WLC:加權最少連接(默認采用的就是這種)(Weighted Least Connections)
  在集群系統(tǒng)中的服務器性能差異較大的情況下硝烂,調度器采用“加權最少鏈接”調度算法優(yōu)化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載?調度器可以自動問詢真實服務器的負載情況,并動態(tài)地調整其權值铜幽。

③.SED:最短延遲調度(Shortest Expected Delay )
  在WLC基礎上改進滞谢,Overhead = (ACTIVE+1)*256/加權,不再考慮非活動狀態(tài)除抛,把當前處于活動狀態(tài)的數(shù)目+1來實現(xiàn)狮杨,數(shù)目最小的,接受下次請求到忽,+1的目的是為了考慮加權的時候橄教,非活動連接過多缺陷:當權限過大的時候,會倒置空閑服務器一直處于無連接狀態(tài)喘漏。

④.NQ永不排隊/最少隊列調度(Never Queue Scheduling NQ)
  無需隊列颤陶。如果有臺 realserver的連接數(shù)=0就直接分配過去,不需要再進行sed運算陷遮,保證不會有一個主機很空間滓走。在SED基礎上無論+幾,第二次一定給下一個帽馋,保證不會有一個主機不會很空閑著搅方,不考慮非活動連接,才用NQ绽族,SED要考慮活動狀態(tài)連接姨涡,對于DNS的UDP不需要考慮非活動連接,而httpd的處于保持狀態(tài)的服務就需要考慮非活動連接給服務器的壓力吧慢。

⑤.LBLC:基于局部性的最少鏈接(locality-Based Least Connections)
  基于局部性的最少鏈接”調度算法是針對目標IP地址的負載均衡涛漂,目前主要用于Cache集群系統(tǒng)?該算法根據(jù)請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載检诗,將請求發(fā)送到該服務器;若服務器不存在匈仗,或者該服務器超載且有服務器處于一半的工作負載,則用“最少鏈接”的原則選出一個可用的服務器逢慌,將請求發(fā)送到該服務器?

⑥. LBLCR:帶復制的基于局部性最少連接(Locality-Based Least Connections with Replication)
  帶復制的基于局部性最少鏈接”調度算法也是針對目標IP地址的負載均衡悠轩,目前主要用于Cache集群系統(tǒng)?它與LBLC算法的不同之處是它要維護從一個目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射?該算法根據(jù)請求的目標IP地址找出該目標IP地址對應的服務器組攻泼,按”最小連接”原則從服務器組中選出一臺服務器火架,若服務器沒有超載鉴象,將請求發(fā)送到該服務器;若服務器超載何鸡,則按“最小連接”原則從這個集群中選出一臺服務器纺弊,將該服務器加入到服務器組中,將請求發(fā)送到該服務器?同時骡男,當該服務器組有一段時間沒有被修改淆游,將最忙的服務器從服務器組中刪除,以降低復制的程度洞翩。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末稽犁,一起剝皮案震驚了整個濱河市焰望,隨后出現(xiàn)的幾起案子骚亿,更是在濱河造成了極大的恐慌,老刑警劉巖熊赖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件来屠,死亡現(xiàn)場離奇詭異,居然都是意外死亡震鹉,警方通過查閱死者的電腦和手機俱笛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來传趾,“玉大人迎膜,你說我怎么就攤上這事〗迹” “怎么了磕仅?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長簸呈。 經(jīng)常有香客問我榕订,道長,這世上最難降的妖魔是什么蜕便? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任劫恒,我火速辦了婚禮,結果婚禮上轿腺,老公的妹妹穿的比我還像新娘两嘴。我一直安慰自己,他們只是感情好族壳,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布溶诞。 她就那樣靜靜地躺著,像睡著了一般决侈。 火紅的嫁衣襯著肌膚如雪螺垢。 梳的紋絲不亂的頭發(fā)上喧务,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音枉圃,去河邊找鬼功茴。 笑死,一個胖子當著我的面吹牛孽亲,可吹牛的內容都是我干的坎穿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼返劲,長吁一口氣:“原來是場噩夢啊……” “哼玲昧!你這毒婦竟也來了?” 一聲冷哼從身側響起篮绿,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤孵延,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后亲配,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尘应,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年吼虎,在試婚紗的時候發(fā)現(xiàn)自己被綠了犬钢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡思灰,死狀恐怖玷犹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情洒疚,我是刑警寧澤歹颓,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站拳亿,受9級特大地震影響晴股,放射性物質發(fā)生泄漏。R本人自食惡果不足惜肺魁,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一电湘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹅经,春花似錦寂呛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹦误,卻和暖如春劫拢,著一層夾襖步出監(jiān)牢的瞬間肉津,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工舱沧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妹沙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓熟吏,卻偏偏與公主長得像距糖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牵寺,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容

  • 【摘要】 面對大量用戶訪問悍引、高并發(fā)請求,海量數(shù)據(jù)帽氓,可以使用高性能的服務器趣斤、大型數(shù)據(jù)庫,存儲設備杏节,高性能Web服務器...
    靜修佛緣閱讀 4,537評論 0 24
  • 當前大多數(shù)的互聯(lián)網(wǎng)系統(tǒng)都使用了服務器集群技術,集群是將相同服務部署在多臺服務器上構成一個集群整體對外提供服務歹啼,這些...
    jiangmo閱讀 12,868評論 3 36
  • Linux系統(tǒng)之lvs集群 集群的基本思想 由于現(xiàn)代化業(yè)務上線的需求, 單服務器已經(jīng)不能滿足業(yè)務的需要, 業(yè)務服務...
    魏鎮(zhèn)坪閱讀 3,678評論 0 14
  • 本文部分觀點圖片采用于:http://chenx1242.blog.51cto.com 隨著智能機的逐漸普及玄渗,大量...
    BossHuang閱讀 3,131評論 0 16
  • 若認為某件事不值得去做,那么這件事肯定做不好狸眼。 作為管理者應該想方法讓員工認識到做這件事的意義藤树,讓...
    李向姿閱讀 165評論 0 0