0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解負(fù)載均衡的類型與原理圖

Linux愛好者 ? 來源:CSDN技術(shù)社區(qū) ? 作者:weixin_42073629 ? 2021-03-17 10:37 ? 次閱讀

一、負(fù)載均衡由來

在業(yè)務(wù)初期,我們一般會(huì)先使用單臺(tái)服務(wù)器對(duì)外提供服務(wù)。隨著業(yè)務(wù)流量越來越大,單臺(tái)服務(wù)器無論如何優(yōu)化,無論采用多好的硬件,總會(huì)有性能天花板,當(dāng)單服務(wù)器的性能無法滿足業(yè)務(wù)需求時(shí),就需要把多臺(tái)服務(wù)器組成集群系統(tǒng)提高整體的處理性能。不過我們要使用統(tǒng)一的入口方式對(duì)外提供服務(wù),所以需要一個(gè) 流量調(diào)度器 通過均衡的算法,將用戶大量的請(qǐng)求均衡地分發(fā)到后端集群不同的服務(wù)器上。這就是我們后邊要說的 負(fù)載均衡。

使用負(fù)載均衡帶來的好處:

提高了系統(tǒng)的整體性能

提高了系統(tǒng)的擴(kuò)展性

提高了系統(tǒng)的可用性

二、負(fù)載均衡類型

廣義上的負(fù)載均衡器大概可以分為 3 類,包括:DNS 方式實(shí)現(xiàn)負(fù)載均衡、硬件負(fù)載均衡、軟件負(fù)載均衡。

2.1 DNS 實(shí)現(xiàn)負(fù)載均衡

DNS 實(shí)現(xiàn)負(fù)載均衡是最基礎(chǔ)簡單的方式。一個(gè)域名通過 DNS 解析到多個(gè) IP,每個(gè) IP 對(duì)應(yīng)不同的服務(wù)器實(shí)例,這樣就完成了流量的調(diào)度,雖然沒有使用常規(guī)的負(fù)載均衡器,但也的確完成了簡單負(fù)載均衡的功能。

通過 DNS 實(shí)現(xiàn)負(fù)載均衡的方式,最大的優(yōu)點(diǎn)就是實(shí)現(xiàn)簡單,成本低,無需自己開發(fā)或維護(hù)負(fù)載均衡設(shè)備,不過存在一些缺點(diǎn):

服務(wù)器故障切換延遲大,服務(wù)器升級(jí)不方便。我們知道 DNS 與用戶之間是層層的緩存,即便是在故障發(fā)生時(shí)及時(shí)通過 DNS 修改或摘除故障服務(wù)器,但中間由于經(jīng)過運(yùn)營商的 DNS 緩存,且緩存很有可能不遵循 TTL 規(guī)則,導(dǎo)致 DNS 生效時(shí)間變得非常緩慢,有時(shí)候一天后還會(huì)有些許的請(qǐng)求流量。

流量調(diào)度不均衡,粒度太粗。DNS 調(diào)度的均衡性,受地區(qū)運(yùn)營商 LocalDNS 返回 IP 列表的策略有關(guān)系,有的運(yùn)營商并不會(huì)輪詢返回多個(gè)不同的 IP 地址。另外,某個(gè)運(yùn)營商 LocalDNS 背后服務(wù)了多少用戶,這也會(huì)構(gòu)成流量調(diào)度不均的重要因素。

流量分配策略比較簡單,支持的算法較少。DNS 一般只支持 RR 的輪詢方式,流量分配策略比較簡單,不支持權(quán)重、Hash 等調(diào)度算法。

DNS 支持的 IP 列表有限制。我們知道 DNS 使用 UDP 報(bào)文進(jìn)行信息傳遞,每個(gè) UDP 報(bào)文大小受鏈路的 MTU 限制,所以報(bào)文中存儲(chǔ)的 IP 地址數(shù)量也是非常有限的,阿里 DNS 系統(tǒng)針對(duì)同一個(gè)域名支持配置 10 個(gè)不同的 IP 地址。

實(shí)際上生產(chǎn)環(huán)境中很少使用這種方式來實(shí)現(xiàn)負(fù)載均衡,畢竟缺點(diǎn)很明顯。文中之所以描述 DNS 負(fù)載均衡方式,是為了能夠更清楚地解釋負(fù)載均衡的概念。一些大公司一般也會(huì)利用 DNS 來實(shí)現(xiàn)地理級(jí)別的負(fù)載均衡,實(shí)現(xiàn)就近訪問,提高訪問速度,這種方式一般是入口流量的基礎(chǔ)負(fù)載均衡,下層會(huì)有更專業(yè)的負(fù)載均衡設(shè)備實(shí)現(xiàn)的負(fù)載架構(gòu)。

2.2 硬件負(fù)載均衡

硬件負(fù)載均衡是通過專門的硬件設(shè)備來實(shí)現(xiàn)負(fù)載均衡功能,類似于交換機(jī)、路由器,是一個(gè)負(fù)載均衡專用的網(wǎng)絡(luò)設(shè)備。目前業(yè)界典型的硬件負(fù)載均衡設(shè)備有兩款:F5 和 A10。這類設(shè)備性能強(qiáng)勁、功能強(qiáng)大,但價(jià)格非常昂貴,一般只有 “土豪” 公司才會(huì)使用此類設(shè)備,普通業(yè)務(wù)量級(jí)的公司一般負(fù)擔(dān)不起,二是業(yè)務(wù)量沒那么大,用這些設(shè)備也是浪費(fèi)。

硬件負(fù)載均衡的優(yōu)點(diǎn):

功能強(qiáng)大:全面支持各層級(jí)的負(fù)載均衡,支持全面的負(fù)載均衡算法。

性能強(qiáng)大:性能遠(yuǎn)超常見的軟件負(fù)載均衡器。

穩(wěn)定性高:商用硬件負(fù)載均衡,經(jīng)過了良好的嚴(yán)格測(cè)試,經(jīng)過大規(guī)模使用,穩(wěn)定性高。

安全防護(hù):除了具備負(fù)載均衡外,還具備防火墻、防 DDoS 攻擊等安全功能,貌似還支持 SNAT 功能。

硬件負(fù)載均衡的缺點(diǎn):

價(jià)格昂貴,就是貴。

擴(kuò)展性差,無法進(jìn)行擴(kuò)展和定制。

調(diào)試和維護(hù)比較麻煩,需要專業(yè)人員。

注:至今沒有用過硬件負(fù)載均衡,不過有幸曾經(jīng)與 F5 有過一面之緣。

2.3 軟件負(fù)載均衡

軟件負(fù)載均衡,可以在普通的服務(wù)器上運(yùn)行負(fù)載均衡軟件,實(shí)現(xiàn)負(fù)載均衡功能。目前常見的有 Nginx、HAproxy、LVS。其中的區(qū)別:

Nginx :是 7 層負(fù)載均衡,支持 HTTP、E-mail 協(xié)議,貌似也支持 4 層負(fù)載均衡了。

HAproxy :是 7 層負(fù)載均衡軟件,支持 7 層規(guī)則的設(shè)置,性能也很不錯(cuò)。OpenStack 默認(rèn)使用的負(fù)載均衡軟件就是 HAproxy。

LVS :是純 4 層的負(fù)載均衡,運(yùn)行在內(nèi)核態(tài),性能是軟件負(fù)載均衡中最高的,因?yàn)槭窃谒膶?,所以也更通用一些?/p>

軟件負(fù)載均衡的優(yōu)點(diǎn):

簡單:無論是部署還是維護(hù)都比較簡單。

便宜:買個(gè) Linux 服務(wù)器,裝上軟件即可。

靈活:4 層和 7 層負(fù)載均衡可以根據(jù)業(yè)務(wù)進(jìn)行選擇;也可以根據(jù)業(yè)務(wù)特點(diǎn),比較方便進(jìn)行擴(kuò)展和定制功能。

三、開源負(fù)載均衡器 LVS

軟件負(fù)載均衡主要包括:Nginx、HAproxy 和 LVS。其實(shí)三款負(fù)載均衡軟件都十分常用。四層負(fù)載均衡基本上都會(huì)使用 LVS,據(jù)了解如 BAT 等大廠都是 LVS 重度使用者,就是因?yàn)?LVS 非常出色的性能,能為公司節(jié)省很大成本。

了解到很多大公司使用的 LVS 都是定制版的,做過很多性能方面的優(yōu)化,比開源版本性能會(huì)高出很多。目前只有淘寶開源過優(yōu)化過的 alibaba/LVS,支持 FNAT 模式,但是也很久沒有更新過了。另外愛奇藝去年開源出了 DPDK 版本的 LVS,名叫 DPVS,性能非常強(qiáng)悍。

目前較為熟悉的負(fù)載均衡軟件是 LVS,且大部分中小型公司使用開源的 LVS 足夠滿足業(yè)務(wù)需求。

3.1 netfilter基本原理

LVS 是基于 Linux 內(nèi)核中 netfilter 框架實(shí)現(xiàn)的負(fù)載均衡系統(tǒng),所以要學(xué)習(xí) LVS 之前必須要先簡單了解 netfilter 基本工作原理。netfilter 其實(shí)很復(fù)雜也很重要,平時(shí)我們說的 Linux 防火墻就是 netfilter,不過我們平時(shí)操作的都是 iptables,iptables 只是用戶空間編寫和傳遞規(guī)則的工具而已,真正工作的是 netfilter。通過下圖可以簡單了解下 netfilter 的工作機(jī)制:

netfilter 是內(nèi)核態(tài)的 Linux 防火墻機(jī)制,作為一個(gè)通用、抽象的框架,提供了一整套的 hook 函數(shù)管理機(jī)制,提供諸如數(shù)據(jù)包過濾、網(wǎng)絡(luò)地址轉(zhuǎn)換、基于協(xié)議類型的連接跟蹤的功能。

通俗點(diǎn)講,就是 netfilter 提供一種機(jī)制,可以在數(shù)據(jù)包流經(jīng)過程中,根據(jù)規(guī)則設(shè)置若干個(gè)關(guān)卡(hook 函數(shù))來執(zhí)行相關(guān)的操作。netfilter 總共設(shè)置了 5 個(gè)點(diǎn),包括:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

PREROUTING :剛剛進(jìn)入網(wǎng)絡(luò)層,還未進(jìn)行路由查找的包,通過此處;

INPUT :通過路由查找,確定發(fā)往本機(jī)的包,通過此處;

FORWARD :經(jīng)路由查找后,要轉(zhuǎn)發(fā)的包,在POST_ROUTING之前;

OUTPUT :從本機(jī)進(jìn)程剛發(fā)出的包,通過此處;

POSTROUTING :進(jìn)入網(wǎng)絡(luò)層已經(jīng)經(jīng)過路由查找,確定轉(zhuǎn)發(fā),將要離開本設(shè)備的包,通過此處;

當(dāng)一個(gè)數(shù)據(jù)包進(jìn)入網(wǎng)卡,經(jīng)過鏈路層之后進(jìn)入網(wǎng)絡(luò)層就會(huì)到達(dá) PREROUTING,接著根據(jù)目標(biāo) IP 地址進(jìn)行路由查找,如果目標(biāo) IP 是本機(jī),數(shù)據(jù)包繼續(xù)傳遞到 INPUT 上,經(jīng)過協(xié)議棧后根據(jù)端口將數(shù)據(jù)送到相應(yīng)的應(yīng)用程序;應(yīng)用程序處理請(qǐng)求后將響應(yīng)數(shù)據(jù)包發(fā)送到 OUTPUT 上,最終通過 POSTROUTING 后發(fā)送出網(wǎng)卡。如果目標(biāo) IP 不是本機(jī),而且服務(wù)器開啟了 forward 參數(shù),就會(huì)將數(shù)據(jù)包遞送給 FORWARD 上,最后通過 POSTROUTING 后發(fā)送出網(wǎng)卡。

3.2 LVS基本原理

LVS 是基于 netfilter 框架,主要工作于 INPUT 鏈上,在 INPUT 上注冊(cè) ip_vs_in HOOK 函數(shù),進(jìn)行 IPVS 主流程,大概原理如圖所示:

當(dāng)用戶訪問 www.sina.com.cn 時(shí),用戶數(shù)據(jù)通過層層網(wǎng)絡(luò),最后通過交換機(jī)進(jìn)入 LVS 服務(wù)器網(wǎng)卡,并進(jìn)入內(nèi)核網(wǎng)絡(luò)層。

進(jìn)入 PREROUTING 后經(jīng)過路由查找,確定訪問的目的 VIP 是本機(jī) IP 地址,所以數(shù)據(jù)包進(jìn)入到 INPUT 鏈上。

IPVS 是工作在 INPUT 鏈上,會(huì)根據(jù)訪問的 vip+port 判斷請(qǐng)求是否 IPVS 服務(wù),如果是則調(diào)用注冊(cè)的 IPVS HOOK 函數(shù),進(jìn)行 IPVS 相關(guān)主流程,強(qiáng)行修改數(shù)據(jù)包的相關(guān)數(shù)據(jù),并將數(shù)據(jù)包發(fā)往 POSTROUTING 鏈上。

POSTROUTING 上收到數(shù)據(jù)包后,根據(jù)目標(biāo) IP 地址(后端服務(wù)器),通過路由選路,將數(shù)據(jù)包最終發(fā)往后端的服務(wù)器上。

開源 LVS 版本有 3 種工作模式,每種模式工作原理截然不同,說各種模式都有自己的優(yōu)缺點(diǎn),分別適合不同的應(yīng)用場(chǎng)景,不過最終本質(zhì)的功能都是能實(shí)現(xiàn)均衡的流量調(diào)度和良好的擴(kuò)展性。主要包括以下三種模式:

DR 模式

NAT 模式

Tunnel 模式

另外必須要說的模式是 FullNAT,這個(gè)模式在開源版本中是模式?jīng)]有的,代碼 沒有合并進(jìn)入內(nèi)核主線版本,后面會(huì)有專門章節(jié)詳細(xì)介紹 FullNAT 模式。下邊分別就 DR、NAT、Tunnel 模式分別詳細(xì)介紹原理。

3.3 DR 模式實(shí)現(xiàn)原理

LVS 基本原理圖(上圖)中描述的比較簡單,表述的是比較通用流程。下邊會(huì)針對(duì) DR 模式的具體實(shí)現(xiàn)原理,詳細(xì)的闡述 DR 模式是如何工作的。

其實(shí) DR 是最常用的工作模式,因?yàn)樗膹?qiáng)大的性能。下邊以一次請(qǐng)求和響應(yīng)數(shù)據(jù)流的過程來描述 DR 模式的具體原理。

(一)實(shí)現(xiàn)原理過程

① 當(dāng)客戶端請(qǐng)求 www.sina.com.cn 主頁,經(jīng)過 DNS 解析到 IP 后,向新浪服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù),數(shù)據(jù)包經(jīng)過層層網(wǎng)絡(luò)到達(dá)新浪負(fù)載均衡 LVS 服務(wù)器,到達(dá) LVS 網(wǎng)卡時(shí)的數(shù)據(jù)包:源 IP 是客戶端 IP 地址 CIP,目的 IP 是新浪對(duì)外的服務(wù)器 IP 地址,也就是 VIP;此時(shí)源 MAC 地址是 CMAC,其實(shí)是 LVS 連接的路由器的 MAC 地址(為了容易理解記為 CMAC),目標(biāo) MAC 地址是 VIP 對(duì)應(yīng)的 MAC,記為 VMAC。

② 數(shù)據(jù)包到達(dá)網(wǎng)卡后,經(jīng)過鏈路層到達(dá) PREROUTING 位置(剛進(jìn)入網(wǎng)絡(luò)層),查找路由發(fā)現(xiàn)目的 IP 是 LVS 的 VIP,就會(huì)遞送到 INPUT 鏈上,此時(shí)數(shù)據(jù)包 MAC、IP、Port 都沒有修改。

③ 數(shù)據(jù)包到達(dá) INPUT 鏈,INPUT 是 LVS 主要工作的位置。此時(shí) LVS 會(huì)根據(jù)目的 IP 和 Port 來確認(rèn)是否是 LVS 定義的服務(wù),如果是定義過的 VIP 服務(wù),就會(huì)根據(jù)配置的 Service 信息,從 RealServer 中選擇一個(gè)作為后端服務(wù)器 RS1,然后以 RS1 作為目標(biāo)查找 Out 方向的路由,確定一下跳信息以及數(shù)據(jù)包要通過哪個(gè)網(wǎng)卡發(fā)出。最后將數(shù)據(jù)包通過 INET_HOOK 到 OUTPUT 鏈上(Out 方向剛從四層進(jìn)入網(wǎng)絡(luò)層)。

④ 數(shù)據(jù)包通過 POSTROUTING 鏈后,從網(wǎng)絡(luò)層轉(zhuǎn)到鏈路層,將目的 MAC 地址修改為 RealServer 服務(wù)器 MAC 地址,記為 RMAC;而源 MAC 地址修改為 LVS 與 RS 同網(wǎng)段的 selfIP 對(duì)應(yīng)的 MAC 地址,記為 DMAC。此時(shí),數(shù)據(jù)包通過交換機(jī)轉(zhuǎn)發(fā)給了 RealServer 服務(wù)器(注:為了簡單圖中沒有畫交換機(jī))。

⑤ 請(qǐng)求數(shù)據(jù)包到達(dá) RealServer 服務(wù)器后,鏈路層檢查目的 MAC 是自己網(wǎng)卡地址。到了網(wǎng)絡(luò)層,查找路由,目的 IP 是 VIP(lo 上配置了 VIP),判定是本地主機(jī)的數(shù)據(jù)包,經(jīng)過協(xié)議棧后拷貝至應(yīng)用程序(比如這里是 nginx 服務(wù)器),nginx 響應(yīng)請(qǐng)求后,產(chǎn)生響應(yīng)數(shù)據(jù)包。以目的 VIP 為 dst 查找 Out 路由,確定嚇一跳信息和發(fā)送網(wǎng)卡設(shè)備信息,發(fā)送數(shù)據(jù)包。此時(shí)數(shù)據(jù)包源、目的 IP 分別是 VIP、CIP,而源 MAC 地址是 RS1 的 RMAC,目的 MAC 是下一跳(路由器)的 MAC 地址,記為 CMAC(為了容易理解,記為 CMAC)。然后數(shù)據(jù)包通過 RS 相連的路由器轉(zhuǎn)發(fā)給真正客戶端。

從整個(gè)過程可以看出,DR 模式 LVS 邏輯非常簡單,數(shù)據(jù)包通過路由方式直接轉(zhuǎn)發(fā)給 RS,而且響應(yīng)數(shù)據(jù)包是由 RS 服務(wù)器直接發(fā)送給客戶端,不經(jīng)過 LVS。我們知道一般請(qǐng)求數(shù)據(jù)包會(huì)比較小,響應(yīng)報(bào)文較大,經(jīng)過 LVS 的數(shù)據(jù)包基本上都是小包,上述幾條因素是 LVS 的 DR 模式性能強(qiáng)大的主要原因。

二)優(yōu)缺點(diǎn)和使用場(chǎng)景

DR 模式的優(yōu)點(diǎn)

a. 響應(yīng)數(shù)據(jù)不經(jīng)過 lvs,性能高

b. 對(duì)數(shù)據(jù)包修改小,信息保存完整(攜帶客戶端源 IP)

DR 模式的缺點(diǎn)

a. lvs 與 rs 必須在同一個(gè)物理網(wǎng)絡(luò)(不支持跨機(jī)房)

b. rs 上必須配置 lo 和其它內(nèi)核參數(shù)

c. 不支持端口映射

DR 模式的使用場(chǎng)景

如果對(duì)性能要求非常高,可以首選 DR 模式,而且可以透?jìng)骺蛻舳嗽?IP 地址。

3.4 NAT 模式實(shí)現(xiàn)原理

lvs 的第 2 種工作模式是 NAT 模式,下圖詳細(xì)介紹了數(shù)據(jù)包從客戶端進(jìn)入 lvs 后轉(zhuǎn)發(fā)到 rs,后經(jīng) rs 再次將響應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)給 lvs,由 lvs 將數(shù)據(jù)包回復(fù)給客戶端的整個(gè)過程。

(一)實(shí)現(xiàn)原理與過程

① 用戶請(qǐng)求數(shù)據(jù)包經(jīng)過層層網(wǎng)絡(luò),到達(dá) lvs 網(wǎng)卡,此時(shí)數(shù)據(jù)包源 IP 是 CIP,目的 IP 是 VIP。

② 經(jīng)過網(wǎng)卡進(jìn)入網(wǎng)絡(luò)層 prerouting 位置,根據(jù)目的 IP 查找路由,確認(rèn)是本機(jī) IP,將數(shù)據(jù)包轉(zhuǎn)發(fā)到 INPUT 上,此時(shí)源、目的 IP 都未發(fā)生變化。

③ 到達(dá) lvs 后,通過目的 IP 和目的 port 查找是否為 IPVS 服務(wù)。若是 IPVS 服務(wù),則會(huì)選擇一個(gè) RS 作為后端服務(wù)器,將數(shù)據(jù)包目的 IP 修改為 RIP,并以 RIP 為目的 IP 查找路由信息,確定下一跳和出口信息,將數(shù)據(jù)包轉(zhuǎn)發(fā)至 output 上。

④ 修改后的數(shù)據(jù)包經(jīng)過 postrouting 和鏈路層處理后,到達(dá) RS 服務(wù)器,此時(shí)的數(shù)據(jù)包源 IP 是 CIP,目的 IP 是 RIP。

⑤ 到達(dá) RS 服務(wù)器的數(shù)據(jù)包經(jīng)過鏈路層和網(wǎng)絡(luò)層檢查后,被送往用戶空間 nginx 程序。nginx 程序處理完畢,發(fā)送響應(yīng)數(shù)據(jù)包,由于 RS 上默認(rèn)網(wǎng)關(guān)配置為 lvs 設(shè)備 IP,所以 nginx 服務(wù)器會(huì)將數(shù)據(jù)包轉(zhuǎn)發(fā)至下一跳,也就是 lvs 服務(wù)器。此時(shí)數(shù)據(jù)包源 IP 是 RIP,目的 IP 是 CIP。

⑥ lvs 服務(wù)器收到 RS 響應(yīng)數(shù)據(jù)包后,根據(jù)路由查找,發(fā)現(xiàn)目的 IP 不是本機(jī) IP,且 lvs 服務(wù)器開啟了轉(zhuǎn)發(fā)模式,所以將數(shù)據(jù)包轉(zhuǎn)發(fā)給 forward 鏈,此時(shí)數(shù)據(jù)包未作修改。

⑦ lvs 收到響應(yīng)數(shù)據(jù)包后,根據(jù)目的 IP 和目的 port 查找服務(wù)和連接表,將源 IP 改為 VIP,通過路由查找,確定下一跳和出口信息,將數(shù)據(jù)包發(fā)送至網(wǎng)關(guān),經(jīng)過復(fù)雜的網(wǎng)絡(luò)到達(dá)用戶客戶端,最終完成了一次請(qǐng)求和響應(yīng)的交互。

NAT 模式雙向流量都經(jīng)過 LVS,因此 NAT 模式性能會(huì)存在一定的瓶頸。不過與其它模式區(qū)別的是,NAT 支持端口映射,且支持 windows 操作系統(tǒng)。

(二)優(yōu)點(diǎn)、缺點(diǎn)與使用場(chǎng)景

NAT 模式優(yōu)點(diǎn)

a. 能夠支持 windows 操作系統(tǒng)

b. 支持端口映射。如果 rs 端口與 vport 不一致,lvs 除了修改目的 IP,也會(huì)修改 dport 以支持端口映射。

NAT 模式缺點(diǎn)

a. 后端 RS 需要配置網(wǎng)關(guān)

b. 雙向流量對(duì) lvs 負(fù)載壓力比較大

NAT 模式的使用場(chǎng)景

如果你是 windows 系統(tǒng),使用 lvs 的話,則必須選擇 NAT 模式了。

3.5 Tunnel 模式實(shí)現(xiàn)原理

Tunnel 模式在國內(nèi)使用的比較少,不過據(jù)說騰訊使用了大量的 Tunnel 模式。它也是一種單臂的模式,只有請(qǐng)求數(shù)據(jù)會(huì)經(jīng)過 lvs,響應(yīng)數(shù)據(jù)直接從后端服務(wù)器發(fā)送給客戶端,性能也很強(qiáng)大,同時(shí)支持跨機(jī)房。下邊繼續(xù)看圖分析原理。

(一)實(shí)現(xiàn)原理與過程

① 用戶請(qǐng)求數(shù)據(jù)包經(jīng)過多層網(wǎng)絡(luò),到達(dá) lvs 網(wǎng)卡,此時(shí)數(shù)據(jù)包源 IP 是 cip,目的 ip 是 vip。

② 經(jīng)過網(wǎng)卡進(jìn)入網(wǎng)絡(luò)層 prerouting 位置,根據(jù)目的 ip 查找路由,確認(rèn)是本機(jī) ip,將數(shù)據(jù)包轉(zhuǎn)發(fā)到 input 鏈上,到達(dá) lvs,此時(shí)源、目的 ip 都未發(fā)生變化。

③ 到達(dá) lvs 后,通過目的 ip 和目的 port 查找是否為 IPVS 服務(wù)。若是 IPVS 服務(wù),則會(huì)選擇一個(gè) rs 作為后端服務(wù)器,以 rip 為目的 ip 查找路由信息,確定下一跳、dev 等信息,然后 IP 頭部前邊額外增加了一個(gè) IP 頭(以 dip 為源,rip 為目的 ip),將數(shù)據(jù)包轉(zhuǎn)發(fā)至 output 上。

④ 數(shù)據(jù)包根據(jù)路由信息經(jīng)最終經(jīng)過 lvs 網(wǎng)卡,發(fā)送至路由器網(wǎng)關(guān),通過網(wǎng)絡(luò)到達(dá)后端服務(wù)器。

⑤ 后端服務(wù)器收到數(shù)據(jù)包后,ipip 模塊將 Tunnel 頭部卸載,正??吹降脑?ip 是 cip,目的 ip 是 vip,由于在 tunl0 上配置 vip,路由查找后判定為本機(jī) ip,送往應(yīng)用程序。應(yīng)用程序 nginx 正常響應(yīng)數(shù)據(jù)后以 vip 為源 ip,cip 為目的 ip 數(shù)據(jù)包發(fā)送出網(wǎng)卡,最終到達(dá)客戶端。

Tunnel 模式具備 DR 模式的高性能,又支持跨機(jī)房訪問,聽起來比較完美了。不過國內(nèi)運(yùn)營商有一定特色性,比如 RS 的響應(yīng)數(shù)據(jù)包的源 IP 為 VIP,VIP 與后端服務(wù)器有可能存在跨運(yùn)營商的情況,有可能被運(yùn)營商的策略封掉。Tunnel 在生產(chǎn)環(huán)境確實(shí)沒有使用過,在國內(nèi)推行 Tunnel 可能會(huì)有一定的難度吧!

(二)優(yōu)點(diǎn)、缺點(diǎn)與使用場(chǎng)景

Tunnel 模式的優(yōu)點(diǎn)

a. 單臂模式,對(duì) lvs 負(fù)載壓力小

b. 對(duì)數(shù)據(jù)包修改較小,信息保存完整

c. 可跨機(jī)房(不過在國內(nèi)實(shí)現(xiàn)有難度)

Tunnel 模式的缺點(diǎn)

a. 需要在后端服務(wù)器安裝配置 ipip 模塊

b. 需要在后端服務(wù)器 tunl0 配置 vip

c. 隧道頭部的加入可能導(dǎo)致分片,影響服務(wù)器性能

d. 隧道頭部 IP 地址固定,后端服務(wù)器網(wǎng)卡 hash 可能不均

e. 不支持端口映射

Tunnel 模式的使用場(chǎng)景

理論上,如果對(duì)轉(zhuǎn)發(fā)性能要求較高,且有跨機(jī)房需求,Tunnel 可能是較好的選擇。

3.6 涉及的概念術(shù)語

上述內(nèi)容中涉及到很多術(shù)語或縮寫,這里簡單解釋下具體的含義,便于理解。

DS:Director Server。指的是前端負(fù)載均衡器節(jié)點(diǎn)。

RS:Real Server。后端真實(shí)的工作服務(wù)器。

CIP:Client IP,表示的是客戶端 IP 地址。

VIP:Virtual IP,表示負(fù)載均衡對(duì)外提供訪問的 IP 地址,一般負(fù)載均衡 IP 都會(huì)通過 Virtual IP 實(shí)現(xiàn)高可用。

RIP:RealServer IP,表示負(fù)載均衡后端的真實(shí)服務(wù)器 IP 地址。

DIP:Director IP,表示負(fù)載均衡與后端服務(wù)器通信的 IP 地址。

CMAC:客戶端的 MAC 地址,準(zhǔn)確的應(yīng)該是 LVS 連接的路由器的 MAC 地址。

VMAC:負(fù)載均衡 LVS 的 VIP 對(duì)應(yīng)的 MAC 地址。

DMAC:負(fù)載均衡 LVS 的 DIP 對(duì)應(yīng)的 MAC 地址。

RMAC:后端真實(shí)服務(wù)器的 RIP 地址對(duì)應(yīng)的 MAC 地址。

基礎(chǔ)性的原理知識(shí),暫時(shí)理解到這里就可以了,下一篇以實(shí)踐的方式來進(jìn)一步了解 LVS 的工作原理和基本使用。

原文鏈接:https://blog.csdn.net/weixin_42073629/article/details/109441270
編輯:lyn

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1715

    瀏覽量

    149719
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    219

    瀏覽量

    19890
  • 負(fù)載均衡
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    12374

原文標(biāo)題:全網(wǎng)最詳盡的負(fù)載均衡原理圖解

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    云服務(wù)器怎么做負(fù)載均衡?

    云 服務(wù)器怎么做負(fù)載均衡 ? 云服務(wù)器的負(fù)載均衡通過分配策略、自動(dòng)擴(kuò)展、健康檢查和跨區(qū)域部署四個(gè)核心技術(shù)來實(shí)現(xiàn)。 分配策略包括輪詢、權(quán)重分配和最少連接數(shù),確保流量均勻分配。自動(dòng)擴(kuò)展根據(jù)
    的頭像 發(fā)表于 12-24 10:40 ?122次閱讀

    常見的lvs負(fù)載均衡算法

    常見的lvs負(fù)載均衡算法包括輪詢(RR)、加權(quán)輪詢(WRR)、最小連接(LC)、加權(quán)最小連接(WLC)、基于局部性的最少鏈接(LBLC)、帶復(fù)制的LBLC(LBLCR)、目標(biāo)地址散列(DH)、源地址
    的頭像 發(fā)表于 12-12 13:50 ?130次閱讀

    負(fù)載均衡服務(wù)器與服務(wù)器如何連接?

    負(fù)載均衡服務(wù)器與服務(wù)器如何連接?負(fù)載均衡服務(wù)器與服務(wù)器可通過多種方式連接,包括直接連接、交換機(jī)連接、路由器連接以及云計(jì)算環(huán)境中的連接。小型網(wǎng)絡(luò)常采用直接連接,中大型網(wǎng)絡(luò)則常用交換機(jī)或路
    的頭像 發(fā)表于 12-09 13:41 ?148次閱讀

    常用的服務(wù)器負(fù)載均衡多少錢一臺(tái)?

    服務(wù)器負(fù)載均衡的價(jià)格因配置、功能、類型(硬件、軟件或云服務(wù))及服務(wù)提供商不同而異。硬件負(fù)載均衡價(jià)格區(qū)間大,從數(shù)千元到數(shù)十萬元不等;軟件
    的頭像 發(fā)表于 12-05 11:52 ?113次閱讀

    多鏈路負(fù)載均衡設(shè)置在哪里?

    多鏈路負(fù)載均衡設(shè)置涉及交換機(jī)、路由器和(可選)負(fù)載均衡器的設(shè)置。首先規(guī)劃網(wǎng)絡(luò)拓?fù)浜虸P地址,備份設(shè)備配置。然后,在交換機(jī)上配置VLAN和Trunk鏈路,在路由器上配置接口、路由協(xié)議和策
    的頭像 發(fā)表于 11-13 10:19 ?166次閱讀

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx
    的頭像 發(fā)表于 11-10 13:39 ?278次閱讀
    nginx<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>配置介紹

    華納云:什么是負(fù)載均衡?優(yōu)化資源利用率的策略

    負(fù)載均衡是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)架構(gòu)中不可或缺的一部分,它通過智能分配請(qǐng)求和任務(wù),確保系統(tǒng)資源的高效利用。本文將探討負(fù)載均衡的概念、工作原理、優(yōu)化資源利用率的策略及其在實(shí)際應(yīng)用中的重要性。 1
    的頭像 發(fā)表于 10-28 16:07 ?190次閱讀

    天翼云彈性負(fù)載均衡介紹

    負(fù)載均衡(Load Balancing)是一種優(yōu)化資源分配的技術(shù),主要用于在網(wǎng)絡(luò)環(huán)境中分散工作負(fù)載,以提高系統(tǒng)的響應(yīng)速度、吞吐量以及可靠性。在互聯(lián)網(wǎng)服務(wù)中,當(dāng)單臺(tái)服務(wù)器無法處理大量并發(fā)請(qǐng)求時(shí),就需要
    的頭像 發(fā)表于 10-25 16:20 ?645次閱讀
    天翼云彈性<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>介紹

    IPVS負(fù)載均衡原理解析

    ipvs (IP Virtual Server) 實(shí)現(xiàn)了傳輸層負(fù)載均衡,也就是我們常說的4層LAN交換,作為 Linux 內(nèi)核的一部分。ipvs運(yùn)行在主機(jī)上,在真實(shí)服務(wù)器集群前充當(dāng)負(fù)載均衡
    的頭像 發(fā)表于 10-24 17:34 ?249次閱讀

    零基礎(chǔ)也可以搞懂負(fù)載均衡怎么配置!

    負(fù)載均衡怎么配置?在Linux中配置負(fù)載均衡器的步驟涉及多個(gè)環(huán)節(jié),包括選擇負(fù)載均衡軟件、安裝
    的頭像 發(fā)表于 10-12 15:58 ?263次閱讀

    負(fù)載均衡是什么意思?盤點(diǎn)常見的三種方式

    負(fù)載均衡是什么意思?負(fù)載均衡(LoadBalancing)是一種計(jì)算機(jī)技術(shù),主要用于在多個(gè)計(jì)算資源(如服務(wù)器、虛擬機(jī)、容器等)中分配和管理負(fù)載
    的頭像 發(fā)表于 09-29 14:30 ?306次閱讀

    負(fù)載均衡服務(wù)由幾部分組成?分別是什么

    均衡服務(wù)通常由六部分組成,分別是客戶端、負(fù)載均衡器、后端服務(wù)器、負(fù)載均衡算法、監(jiān)控和健康檢查及會(huì)話保持。這六者互相協(xié)同工作,實(shí)現(xiàn)了流量的有效
    的頭像 發(fā)表于 09-18 11:16 ?300次閱讀

    如何利用traceroute命令發(fā)現(xiàn)網(wǎng)絡(luò)中的負(fù)載均衡

    在網(wǎng)絡(luò)管理和故障排除中,了解數(shù)據(jù)包的路徑和識(shí)別負(fù)載均衡節(jié)點(diǎn)是非常重要的。traceroute 命令是一個(gè)用于跟蹤數(shù)據(jù)包在網(wǎng)絡(luò)中經(jīng)過的路由路徑的工具。本文將詳細(xì)介紹如何利用 traceroute 命令發(fā)現(xiàn)網(wǎng)絡(luò)中的負(fù)載
    的頭像 發(fā)表于 08-07 15:13 ?463次閱讀
    如何利用traceroute命令發(fā)現(xiàn)網(wǎng)絡(luò)中的<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>

    視頻網(wǎng)站服務(wù)器的四種負(fù)載均衡技術(shù)

    視頻網(wǎng)站通常會(huì)面臨大量的用戶訪問和視頻流量,為了提高性能和可用性,需要使用負(fù)載均衡技術(shù)。以下是四種常用的視頻網(wǎng)站服務(wù)器負(fù)載均衡技術(shù): 1、基于DNS的
    的頭像 發(fā)表于 04-01 17:36 ?659次閱讀

    集成芯片原理圖詳解

    集成芯片的原理圖詳解涉及多個(gè)方面,包括芯片的結(jié)構(gòu)、功能模塊、信號(hào)傳輸以及內(nèi)部電路連接等。
    的頭像 發(fā)表于 03-19 16:36 ?2020次閱讀