負(fù)載均衡技術(shù)常用負(fù)載均衡服務(wù)介紹原理實(shí)現(xiàn)底層分析

負(fù)載均衡原理與技術(shù)實(shí)現(xiàn)

負(fù)載均衡(Load Balance蟹瘾,簡(jiǎn)稱LB)是一種服務(wù)器或網(wǎng)絡(luò)設(shè)備的集群技術(shù)圾浅。負(fù)載均衡將特定的業(yè)務(wù)(網(wǎng)絡(luò)服務(wù)、網(wǎng)絡(luò)流量等)分擔(dān)給多個(gè)服務(wù)器或網(wǎng)絡(luò)設(shè)備憾朴,從而提高了業(yè) 務(wù)處理能力狸捕,保證了業(yè)務(wù)的高可用性。負(fù)載均衡基本概念有:實(shí)服務(wù)众雷、實(shí)服務(wù)組灸拍、虛服務(wù)、調(diào)度算法砾省、持續(xù)性等鸡岗,其常用應(yīng)用場(chǎng)景主要是服務(wù)器負(fù)載均衡,鏈路負(fù)載 均衡编兄。

一 服務(wù)器負(fù)載均衡

服務(wù)器負(fù)載均衡根據(jù)LB設(shè)備處理到的報(bào)文層次轩性,分為四層服務(wù)器負(fù)載均衡和七層負(fù)載均衡狠鸳,四層處理到IP包的IP頭,不解析報(bào)文四層以上載荷(L4 SLB)碰煌;七層處理到報(bào)文載荷部分,比如HTTP芦圾,RTSP,SIP報(bào)文頭洪乍,有時(shí)也包括報(bào)文內(nèi)容部分(L7 SLB)。

1.四層服務(wù)器負(fù)載均衡技術(shù)

客戶端將請(qǐng)求發(fā)送給服務(wù)器群前端的負(fù)載均衡設(shè)備壳澳,負(fù)載均衡設(shè)備上的虛服務(wù)接收客戶端請(qǐng)求茫经,通過(guò)調(diào)度算法萎津,選擇真實(shí)服務(wù)器抹镊,再通過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換,用真 實(shí)服務(wù)器地址重寫(xiě)請(qǐng)求報(bào)文的目標(biāo)地址后颈渊,將請(qǐng)求發(fā)送給選定的真實(shí)服務(wù)器终佛;真實(shí)服務(wù)器的響應(yīng)報(bào)文通過(guò)負(fù)載均衡設(shè)備時(shí),報(bào)文的源地址被還原為虛服務(wù)的 VSIP铃彰,再返回給客戶,完成整個(gè)負(fù)載調(diào)度過(guò)程妹田。報(bào)文交互流程如下:

NAT方式的服務(wù)器負(fù)載均衡報(bào)文交互流程圖

報(bào)文交互流程說(shuō)明:

(1)Host發(fā)送服務(wù)請(qǐng)求報(bào)文鹃共,源IP為Host IP、目的IP為VSIP

(2)LB Device接收到請(qǐng)求報(bào)文后霜浴,借助調(diào)度算法計(jì)算出應(yīng)該將請(qǐng)求分發(fā)給哪臺(tái)Server

(3)LB Device使用DNAT技術(shù)分發(fā)報(bào)文,源IP為Host IP晌纫、目的IP為Server IP

(4)Server接收并處理請(qǐng)求報(bào)文,返回響應(yīng)報(bào)文锹漱,源IP為Server IP慕嚷、目的IP為Host IP

(5)LB Device接收響應(yīng)報(bào)文,轉(zhuǎn)換源IP后轉(zhuǎn)發(fā)喝检,源IP為VSIP、目的IP為Host IP

2.七層服務(wù)器負(fù)載均衡技術(shù)

七層負(fù)載均衡和四層負(fù)載均衡相比挠说,只是進(jìn)行負(fù)載均衡的依據(jù)不同,而選擇確定的實(shí)服務(wù)器后损俭,所做的處理基本相同潘酗,下面以HTTP應(yīng)用的負(fù)載均衡為例來(lái)說(shuō)明。

由于在TCP握手階段外永,無(wú)法獲得HTTP真正的請(qǐng)求內(nèi)容,因此也就無(wú)法將客戶的TCP握手報(bào)文直接轉(zhuǎn)發(fā)給服務(wù)器伯顶, 必須由負(fù)載均衡設(shè)備先和客戶完成TCP握手骆膝,等收到足夠的七層內(nèi)容后,再選擇服務(wù)器掐暮,由負(fù)載均衡設(shè)備和所選服務(wù)器建立TCP連接政钟。

七層負(fù)載均衡組網(wǎng)和四層負(fù)載均衡組網(wǎng)有一個(gè)顯著的區(qū)別:四層負(fù)載均衡每個(gè)虛服務(wù)對(duì)應(yīng)一個(gè)實(shí)服務(wù)組,實(shí)服務(wù)組內(nèi)的所有實(shí)服務(wù)器提供相同的服務(wù)养交;七層負(fù) 載均衡每個(gè)虛服務(wù)對(duì)應(yīng)多個(gè)實(shí)服務(wù)組,每組實(shí)服務(wù)器提供相同的服務(wù)灰羽。根據(jù)報(bào)文內(nèi)容選擇對(duì)應(yīng)的實(shí)服務(wù)組鱼辙,然后根據(jù)實(shí)服務(wù)組調(diào)度算法選擇某一個(gè)實(shí)服務(wù)器。

七層負(fù)載均衡組網(wǎng)圖

上圖中描述了基于HTTP的URI目錄信息進(jìn)行的七層負(fù)載均衡部署怠噪,報(bào)文交互流程圖如下:

七層負(fù)載均衡報(bào)文交互流程圖

報(bào)文交互流程說(shuō)明:

(1)-(3):Client和LB建立TCP連接杜跷;

(4):Client發(fā)送HTTP請(qǐng)求,目的IP為虛IP捂寿;

(5):LB設(shè)備分析報(bào)文,根據(jù)調(diào)度算法選擇實(shí)服務(wù)器秦陋,注意此時(shí)會(huì)緩存該報(bào)文治笨;

(6):LB設(shè)備向?qū)嵎?wù)器發(fā)Syn報(bào)文赤嚼,序列號(hào)為Client的Syn報(bào)文序列號(hào)

(7):Server發(fā)送Syn/Ack報(bào)文顺又,目的IP為Client;

(8):LB接收Server的Syn/Ack報(bào)文后蹂空,回應(yīng)ACK報(bào)文

(9):修改步驟(5)中緩存的報(bào)文目的IP和TCP序列號(hào),然后發(fā)給Server上枕;

(10):Server發(fā)送響應(yīng)報(bào)文到LB;

(11):LB修改步驟(9)中的報(bào)文的源地址和TCP序列號(hào)后轉(zhuǎn)發(fā)給Client弱恒。

二 鏈路負(fù)載均衡

在企業(yè)網(wǎng)、運(yùn)營(yíng)商鏈路出口需要部署LB設(shè)備以優(yōu)化鏈路選擇锈玉,提升訪問(wèn)體驗(yàn)义起,鏈路負(fù)載均衡按照流量發(fā)起方向分為Inbound負(fù)載均衡和Outbound負(fù)載均衡

1.Inbound入方向負(fù)載均衡

Inbound負(fù)載均衡技術(shù)是DNS智能解析的一種,外網(wǎng)用戶通過(guò)域名訪問(wèn)內(nèi)部服務(wù)器時(shí)去团,Local DNS的地址解析請(qǐng)求到達(dá)LB設(shè)備穷蛹,LB根據(jù)對(duì)Local DNS的就近性探測(cè)結(jié)果響應(yīng)一個(gè)最優(yōu)的IP地址,外網(wǎng)用戶根據(jù)這個(gè)最優(yōu)的IP響應(yīng)進(jìn)行對(duì)內(nèi)部服務(wù)器的訪問(wèn)肴熏。

Inbound鏈路負(fù)載均衡組網(wǎng)圖

入方向負(fù)載均衡

流程簡(jiǎn)述如下:

(1)外部用戶進(jìn)行資源訪問(wèn)前先進(jìn)行DNS解析,向其本地DNS服務(wù)器發(fā)送DNS請(qǐng)求蛙吏。

(2)本地DNS服務(wù)器將DNS請(qǐng)求的源IP地址替換為自己的IP地址,并轉(zhuǎn)發(fā)給域名對(duì)應(yīng)的權(quán)威服務(wù)器——LB device励烦。

(3)LB device根據(jù)DNS請(qǐng)求的域名和配置的Inbound鏈路負(fù)載均衡規(guī)則進(jìn)行域名解析泼诱。

(4)LB device按照域名解析的結(jié)果,將DNS應(yīng)答發(fā)送給本地DNS服務(wù)器屉栓。

(5)本地DNS服務(wù)器將解析結(jié)果轉(zhuǎn)發(fā)給用戶。

(6)用戶使用解析結(jié)果選擇的鏈路牲平,直接對(duì)LB device進(jìn)行資源訪問(wèn)。

2.Outbound出方向負(fù)載均衡

內(nèi)網(wǎng)用戶訪問(wèn)Internet上其他服務(wù)器域滥。 Outbound鏈路負(fù)載均衡中VSIP為內(nèi)網(wǎng)用戶發(fā)送報(bào)文的目的網(wǎng)段纵柿。用戶將訪問(wèn)VSIP的報(bào)文發(fā) 送到負(fù)載均衡設(shè)備后骗绕,負(fù)載均衡設(shè)備依次根據(jù)策略、持續(xù)性功能、就近性算法格带、調(diào)度算法選擇最佳的鏈路,并將內(nèi)網(wǎng)訪問(wèn)外網(wǎng)的業(yè)務(wù)流量分發(fā)到該鏈路屈呕。

Outbound鏈路負(fù)載均衡組網(wǎng)圖

Outbound負(fù)載均衡報(bào)文交互流程如下:

Outbound 鏈路負(fù)載均衡流程圖

Outbound負(fù)載均衡報(bào)文交互流程說(shuō)明:

(1)LB Device接收內(nèi)網(wǎng)用戶流量 -

(2)LB Device依次根據(jù)策略虎眨、持續(xù)性功能镶摘、就近性算法、調(diào)度算法進(jìn)行鏈路選擇 在Outbound鏈路負(fù)載均衡組網(wǎng)中碌冶,通常使用就近性算法或帶寬調(diào)度算法實(shí)現(xiàn)流量分發(fā)

(3)LB device按照鏈路選擇的結(jié)果將流量轉(zhuǎn)發(fā)給選定的鏈路 -

(4)LB Device接收外網(wǎng)用戶流量 -

(5)LB Device將流量轉(zhuǎn)發(fā)給內(nèi)網(wǎng)用戶

三 負(fù)載均衡優(yōu)化及應(yīng)用

1.TCP連接復(fù)用

連接復(fù)用功能通過(guò)使用連接池技術(shù)涝缝,可以將前端大量的客戶的HTTP請(qǐng)求復(fù)用到后端與服務(wù)器建立的少量的TCP長(zhǎng)連接上,大大減小服務(wù)器的性能負(fù)載罐氨,減小與服務(wù)器之間新建TCP連接所帶來(lái)的延時(shí)滩援,并最大限度減少后端服務(wù)器的并發(fā)連接數(shù),降低服務(wù)器的資源占用。

TCP連接復(fù)用示意圖

上圖給出了TCP連接復(fù)用的簡(jiǎn)單過(guò)程描述邑遏。由Client端發(fā)送的Req1/ Req2/ Req3三個(gè)HTTP請(qǐng)求恰矩,經(jīng)過(guò)LB設(shè)備后,復(fù)用了LB設(shè)備和Server端已經(jīng)建立好的連接纪吮,將Client端的三個(gè)請(qǐng)求通過(guò)兩個(gè)TCP連接發(fā)送給了服務(wù)器端萎胰。

2.SSL卸載

為了避免明文傳輸出現(xiàn)的安全問(wèn)題,對(duì)于敏感信息冰肴,一般采用SSL協(xié)議榔组,如HTTPS,對(duì)HTTP協(xié)議進(jìn)行加密搓扯,以保證整個(gè)HTTP傳輸過(guò)程的安全 性。SSL是需要耗費(fèi)大量CPU資源的一種安全技術(shù)铅歼,如果由后端的服務(wù)器來(lái)承擔(dān)换可,則會(huì)消耗很大的處理能力。應(yīng)用交付設(shè)備為了提升用戶的體驗(yàn)俭识,分擔(dān)服務(wù)器的 處理壓力洞渔,將SSL加解密集中在自身的處理上,相對(duì)于服務(wù)器來(lái)說(shuō)LB能提供更高的SSL處理性能磁椒,還能夠簡(jiǎn)化對(duì)證書(shū)的管理浆熔,減少日常管理的工作量,LB的 該功能又稱為SSL卸載慎皱。

下圖中Client端發(fā)送給Server的所有的HTTPS流量都被LB設(shè)備終結(jié),LB設(shè)備將SSL終結(jié)后茫多,與Server之間可采用HTTP或者 弱加密的HTTPS進(jìn)行通訊。LB設(shè)備承擔(dān)了SSL的卸載工作夺欲,從而極大的減小了服務(wù)器端對(duì)SSL處理的壓力今膊,將服務(wù)器的處理能力釋放出來(lái),更加專注于處 理服務(wù)器本身承擔(dān)的業(yè)務(wù)邏輯市埋。

SSL卸載示意圖

SSL卸載的處理流程如下:

SSL卸載過(guò)程

(1)客戶端向服務(wù)器端發(fā)送SSL握手請(qǐng)求腰素。

(2)LB設(shè)備作為中間的卸載設(shè)備雪营,代替服務(wù)器端和客戶端交互献起,完成SSL握手過(guò)程。

(3)客戶端發(fā)送SSL加密后的請(qǐng)求數(shù)據(jù)谴餐。

(4)LB設(shè)備解密數(shù)據(jù)呆抑。

(5)LB設(shè)備將解密后的明文發(fā)送給Server。

(6)服務(wù)器返回給LB設(shè)備回應(yīng)報(bào)文厌殉。

(7)LB設(shè)備將返回的應(yīng)答報(bào)文加密侈咕。

(8)LB設(shè)備將加密后的應(yīng)答報(bào)文傳給客戶端。

四 結(jié)束語(yǔ)

負(fù)載均衡技術(shù)不管應(yīng)用于用戶訪問(wèn)服務(wù)器資源楼眷,還是應(yīng)用于多鏈路出口,均大大提高了對(duì)資源的高效利用掌腰,顯著降低了用戶的網(wǎng)絡(luò)布署成本张吉,提升了用戶的網(wǎng)絡(luò)使用體驗(yàn)。隨著云計(jì)算的發(fā)展芦拿,負(fù)載均衡的技術(shù)實(shí)現(xiàn)還將與云計(jì)算相結(jié)合,在虛擬化和NFV軟件定義網(wǎng)關(guān)等方面持續(xù)發(fā)展酵幕。

在此我向大家推薦一個(gè)架構(gòu)學(xué)習(xí)交流群缓苛。交流學(xué)習(xí)群號(hào):938837867 暗號(hào):555 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring,MyBatis笔刹,Netty源碼分析,高并發(fā)舌菜、高性能亦镶、分布式、微服務(wù)架構(gòu)的原理缤骨,JVM性能優(yōu)化绊起、分布式架構(gòu)等這些成為架構(gòu)師必備

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜂绎,隨后出現(xiàn)的幾起案子实蔽,更是在濱河造成了極大的恐慌,老刑警劉巖坛吁,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哆姻,居然都是意外死亡玫膀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門箕昭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)解阅,“玉大人,你說(shuō)我怎么就攤上這事述召⌒返兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵夺刑,是天一觀的道長(zhǎng)性誉。 經(jīng)常有香客問(wèn)我茎杂,道長(zhǎng)纫雁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任刽脖,我火速辦了婚禮忌愚,結(jié)果婚禮上硕糊,老公的妹妹穿的比我還像新娘腊徙。我一直安慰自己檬某,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布民傻。 她就那樣靜靜地躺著,像睡著了一般漓踢。 火紅的嫁衣襯著肌膚如雪漏隐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天薯酝,我揣著相機(jī)與錄音爽柒,去河邊找鬼。 笑死做葵,一個(gè)胖子當(dāng)著我的面吹牛心墅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瘫筐,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼铐姚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼策肝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起隐绵,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤之众,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后依许,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棺禾,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年峭跳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了膘婶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缺前。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竣付,死狀恐怖古胆,靈堂內(nèi)的尸體忽然破棺而出逸绎,到底是詐尸還是另有隱情,我是刑警寧澤巫糙,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布参淹,位于F島的核電站浙值,受9級(jí)特大地震影響开呐,放射性物質(zhì)發(fā)生泄漏筐付。R本人自食惡果不足惜瓦戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姨伤。 院中可真熱鬧,春花似錦届慈、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贮喧。三九已至箱沦,卻和暖如春谓形,著一層夾襖步出監(jiān)牢的瞬間寒跳,已是汗流浹背冯袍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舶吗,地道東北人誓琼。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓叔收,卻偏偏與公主長(zhǎng)得像傲隶,于是被迫代替她去往敵國(guó)和親跺株。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 轉(zhuǎn):http://kb.cnblogs.com/page/188170/ (一) 簡(jiǎn)單理解四層和七層負(fù)載...
    菜鳥(niǎo)小玄閱讀 1,015評(píng)論 0 3
  • 四層負(fù)載均衡:僅僅建立一次 TCP 連接 七層負(fù)載均衡:負(fù)載均衡器與客戶端及后端的服務(wù)器會(huì)分別建立一個(gè) TCP 連...
    養(yǎng)碼哥閱讀 1,611評(píng)論 0 6
  • 【摘要】 面對(duì)大量用戶訪問(wèn)十籍、高并發(fā)請(qǐng)求妓雾,海量數(shù)據(jù)械姻,可以使用高性能的服務(wù)器楷拳、大型數(shù)據(jù)庫(kù)欢揖,存儲(chǔ)設(shè)備她混,高性能Web服務(wù)器...
    靜修佛緣閱讀 4,539評(píng)論 0 24
  • 大學(xué)畢業(yè)找工作時(shí)候来累,面試那叫一個(gè)內(nèi)心忐忑嘹锁。 好在一次就過(guò)了领猾,順利拿到工作瘤运。 工作三年后拯坟,決定轉(zhuǎn)行韭山。 再出來(lái)找工作,...
    城南一隅閱讀 448評(píng)論 0 0
  • 1.從本篇文章中我學(xué)到最重要的概念 在英語(yǔ)學(xué)習(xí)中要多讀,多練年柠,多說(shuō) 2.本篇文章中讓我怦然心動(dòng)的單詞 hyp...
    旅228阮玉璽閱讀 153評(píng)論 1 0