溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些

發(fā)布時(shí)間:2022-03-31 10:46:38 來(lái)源:億速云 閱讀:233 作者:iii 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

負(fù)載均衡技術(shù)的實(shí)現(xiàn),主要分為以下幾種:

  • HTTP 重定向負(fù)載

  • DNS 域名解析負(fù)載

  • 反向代理負(fù)載

  • IP 負(fù)載 (NAT 負(fù)載和 IP tunnel 負(fù)載)

  • 直接路由 (LVS—DR)

  • IP隧道 (LVS—TUN)

負(fù)載均衡不能狹義地理解為分配給所有實(shí)際服務(wù)器一樣多的工作量,因?yàn)槎嗯_(tái)服務(wù)器的承載能力各不相同,這可能體現(xiàn)在硬件配置、網(wǎng)絡(luò)帶寬的差異,也可能因?yàn)槟撑_(tái)服務(wù)器身兼多職,我們所說(shuō)的“均衡”,也就是希望所有服務(wù)器都不要過(guò)載,并且能夠***程序地發(fā)揮作用。

一、http 重定向

當(dāng)http代理(比如瀏覽器)向web服務(wù)器請(qǐng)求某個(gè)URL后,web服務(wù)器可以通過(guò)http響應(yīng)頭信息中的Location標(biāo)記來(lái)返回一個(gè)新的URL。

這意味著HTTP代理需要繼續(xù)請(qǐng)求這個(gè)新的URL,完成自動(dòng)跳轉(zhuǎn)。

性能缺陷:

1、吞吐率限制

主站點(diǎn)服務(wù)器的吞吐率平均分配到了被轉(zhuǎn)移的服務(wù)器。

現(xiàn)假設(shè)使用RR(Round  Robin)調(diào)度策略,子服務(wù)器的***吞吐率為1000reqs/s,那么主服務(wù)器的吞吐率要達(dá)到3000reqs/s才能完全發(fā)揮三臺(tái)子服務(wù)器的作用,那么如果有100臺(tái)子服務(wù)器,那么主服務(wù)器的吞吐率可想而知得有大?

相反,如果主服務(wù)的***吞吐率為6000reqs/s,那么平均分配到子服務(wù)器的吞吐率為2000reqs/s,而現(xiàn)子服務(wù)器的***吞吐率為1000reqs/s,因此就得增加子服務(wù)器的數(shù)量,增加到6個(gè)才能滿足。

2、重定向訪問(wèn)深度不同

有的重定向一個(gè)靜態(tài)頁(yè)面,有的重定向相比復(fù)雜的動(dòng)態(tài)頁(yè)面,那么實(shí)際服務(wù)器的負(fù)載差異是不可預(yù)料的,而主站服務(wù)器卻一無(wú)所知。因此整站使用重定向方法做負(fù)載均衡不太好。

我們需要權(quán)衡轉(zhuǎn)移請(qǐng)求的開(kāi)銷和處理實(shí)際請(qǐng)求的開(kāi)銷,前者相對(duì)于后者越小,那么重定向的意義就越大,例如下載。

你可以去很多鏡像下載網(wǎng)站試下,會(huì)發(fā)現(xiàn)基本下載都使用了Location做了重定向。

DNS 負(fù)載均衡

DNS負(fù)責(zé)提供域名解析服務(wù),當(dāng)訪問(wèn)某個(gè)站點(diǎn)時(shí),實(shí)際上首先需要通過(guò)該站點(diǎn)域名的DNS服務(wù)器來(lái)獲取域名指向的IP地址,在這一過(guò)程中,DNS服務(wù)器完成了域名到IP地址的映射。

同樣,這樣映射也可以是一對(duì)多的,這時(shí)候,DNS服務(wù)器便充當(dāng)了負(fù)載均衡調(diào)度器,它就像http重定向轉(zhuǎn)換策略一樣,將用戶的請(qǐng)求分散到多臺(tái)服務(wù)器上,但是它的實(shí)現(xiàn)機(jī)制完全不同。

使用dig命令來(lái)看下"baidu"的DNS設(shè)置

負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些

可見(jiàn)baidu擁有三個(gè)A記錄

相比http重定向,基于DNS的負(fù)載均衡完全節(jié)省了所謂的主站點(diǎn),或者說(shuō)DNS服務(wù)器已經(jīng)充當(dāng)了主站點(diǎn)的職能。

但不同的是,作為調(diào)度器,DNS服務(wù)器本身的性能幾乎不用擔(dān)心。

因?yàn)镈NS記錄可以被用戶瀏覽器或者互聯(lián)網(wǎng)接入服務(wù)商的各級(jí)DNS服務(wù)器緩存,只有當(dāng)緩存過(guò)期后才會(huì)重新向域名的DNS服務(wù)器請(qǐng)求解析。

也說(shuō)是DNS不存在http的吞吐率限制,理論上可以***增加實(shí)際服務(wù)器的數(shù)量。

特性:

1、可以根據(jù)用戶IP來(lái)進(jìn)行智能解析。DNS服務(wù)器可以在所有可用的A記錄中尋找離用記最近的一臺(tái)服務(wù)器。

2、動(dòng)態(tài)DNS:在每次IP地址變更時(shí),及時(shí)更新DNS服務(wù)器。當(dāng)然,因?yàn)榫彺妫欢ǖ难舆t不可避免。

不足:

1、沒(méi)有用戶能直接看到DNS解析到了哪一臺(tái)實(shí)際服務(wù)器,加服務(wù)器運(yùn)維人員的調(diào)試帶來(lái)了不便。

2、策略的局限性。例如你無(wú)法將HTTP請(qǐng)求的上下文引入到調(diào)度策略中,而在前面介紹的基于HTTP重定向的負(fù)載均衡系統(tǒng)中,調(diào)度器工作在HTTP層面,它可以充分理解HTTP請(qǐng)求后根據(jù)站點(diǎn)的應(yīng)用邏輯來(lái)設(shè)計(jì)調(diào)度策略,比如根據(jù)請(qǐng)求不同的URL來(lái)進(jìn)行合理的過(guò)濾和轉(zhuǎn)移。

3、如果要根據(jù)實(shí)際服務(wù)器的實(shí)時(shí)負(fù)載差異來(lái)調(diào)整調(diào)度策略,這需要DNS服務(wù)器在每次解析操作時(shí)分析各服務(wù)器的健康狀態(tài),對(duì)于DNS服務(wù)器來(lái)說(shuō),這種自定義開(kāi)發(fā)存在較高的門(mén)檻,更何況大多數(shù)站點(diǎn)只是使用第三方DNS服務(wù)。

4、DNS記錄緩存,各級(jí)節(jié)點(diǎn)的DNS服務(wù)器不同程序的緩存會(huì)讓你暈頭轉(zhuǎn)向。

5、基于以上幾點(diǎn),DNS服務(wù)器并不能很好地完成工作量均衡分配,***,是否選擇基于DNS的負(fù)載均衡方式完全取決于你的需要。

反向代理負(fù)載均衡

這個(gè)肯定大家都有所接觸,因?yàn)閹缀跛兄髁鞯腤eb服務(wù)器都熱衷于支持基于反向代理的負(fù)載均衡。它的核心工作就是轉(zhuǎn)發(fā)HTTP請(qǐng)求。

相比前面的HTTP重定向和DNS解析,反向代理的調(diào)度器扮演的是用戶和實(shí)際服務(wù)器中間人的角色:

1、任何對(duì)于實(shí)際服務(wù)器的HTTP請(qǐng)求都必須經(jīng)過(guò)調(diào)度器

2、調(diào)度器必須等待實(shí)際服務(wù)器的HTTP響應(yīng),并將它反饋給用戶(前兩種方式不需要經(jīng)過(guò)調(diào)度反饋,是實(shí)際服務(wù)器直接發(fā)送給用戶)

特性:

1、調(diào)度策略豐富。例如可以為不同的實(shí)際服務(wù)器設(shè)置不同的權(quán)重,以達(dá)到能者多勞的效果。

2、對(duì)反向代理服務(wù)器的并發(fā)處理能力要求高,因?yàn)樗ぷ髟贖TTP層面。

3、反向代理服務(wù)器進(jìn)行轉(zhuǎn)發(fā)操作本身是需要一定開(kāi)銷的,比如創(chuàng)建線程、與后端服務(wù)器建立TCP連接、接收后端服務(wù)器返回的處理結(jié)果、分析HTTP頭部信息、用戶空間和內(nèi)核空間的頻繁切換等。

雖然這部分時(shí)間并不長(zhǎng),但是當(dāng)后端服務(wù)器處理請(qǐng)求的時(shí)間非常短時(shí),轉(zhuǎn)發(fā)的開(kāi)銷就顯得尤為突出。例如請(qǐng)求靜態(tài)文件,更適合使用前面介紹的基于DNS的負(fù)載均衡方式。

4、反向代理服務(wù)器可以監(jiān)控后端服務(wù)器,比如系統(tǒng)負(fù)載、響應(yīng)時(shí)間、是否可用、TCP連接數(shù)、流量等,從而根據(jù)這些數(shù)據(jù)調(diào)整負(fù)載均衡的策略。

5、反射代理服務(wù)器可以讓用戶在一次會(huì)話周期內(nèi)的所有請(qǐng)求始終轉(zhuǎn)發(fā)到一臺(tái)特定的后端服務(wù)器上(粘滯會(huì)話),這樣的好處一是保持session的本地訪問(wèn),二是防止后端服務(wù)器的動(dòng)態(tài)內(nèi)存緩存的資源浪費(fèi)。

IP 負(fù)載均衡(LVS-NAT)

因?yàn)榉聪虼矸?wù)器工作在HTTP層,其本身的開(kāi)銷就已經(jīng)嚴(yán)重制約了可擴(kuò)展性,從而也限制了它的性能極限。那能否在HTTP層面以下實(shí)現(xiàn)負(fù)載均衡呢?

NAT服務(wù)器:它工作在傳輸層,它可以修改發(fā)送來(lái)的IP數(shù)據(jù)包,將數(shù)據(jù)包的目標(biāo)地址修改為實(shí)際服務(wù)器地址。

從Linux2.4內(nèi)核開(kāi)始,其內(nèi)置的Neftilter模塊在內(nèi)核中維護(hù)著一些數(shù)據(jù)***濾表,這些表包含了用于控制數(shù)據(jù)***濾的規(guī)則。

可喜的是,Linux提供了iptables來(lái)對(duì)過(guò)濾表進(jìn)行插入、修改和刪除等操作。更加令人振奮的是,Linux2.6.x內(nèi)核中內(nèi)置了IPVS模塊,它的工作性質(zhì)類型于Netfilter模塊,不過(guò)它更專注于實(shí)現(xiàn)IP負(fù)載均衡。

想知道你的服務(wù)器內(nèi)核是否已經(jīng)安裝了IPVS模塊,可以

負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些

有輸出意味著IPVS已經(jīng)安裝了。IPVS的管理工具是ipvsadm,它為提供了基于命令行的配置界面,可以通過(guò)它快速實(shí)現(xiàn)負(fù)載均衡系統(tǒng)。

這就是大名鼎鼎的LVS(Linux Virtual Server,Linux虛擬服務(wù)器)。

1、打開(kāi)調(diào)度器的數(shù)據(jù)包轉(zhuǎn)發(fā)選項(xiàng)

echo 1 > /proc/sys/net/ipv4/ip_forward

2、檢查實(shí)際服務(wù)器是否已經(jīng)將NAT服務(wù)器作為自己的默認(rèn)網(wǎng)關(guān),如果不是,如添加

route add default gw xx.xx.xx.xx

3、使用ipvsadm配置

ipvsadm -A -t 111.11.11.11:80 -s rr

添加一臺(tái)虛擬服務(wù)器,-t 后面是服務(wù)器的外網(wǎng)ip和端口,-s  rr是指采用簡(jiǎn)單輪詢的RR調(diào)度策略(這屬于靜態(tài)調(diào)度策略,除此之外,LVS還提供了系列的動(dòng)態(tài)調(diào)度策略,比如最小連接(LC)、帶權(quán)重的最小連接(WLC),最短期望時(shí)間延遲(SED)等)

ipvsadm -a -t 111.11.11.11:80 -r 10.10.120.210:8000 -m ipvsadm -a -t 111.11.11.11:80 -r 10.10.120.211:8000 -m

添加兩臺(tái)實(shí)際服務(wù)器(不需要有外網(wǎng)ip),-r后面是實(shí)際服務(wù)器的內(nèi)網(wǎng)ip和端口,-m表示采用NAT方式來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包

運(yùn)行ipvsadm -L -n可以查看實(shí)際服務(wù)器的狀態(tài)。這樣就大功告成了。

實(shí)驗(yàn)證明使用基于NAT的負(fù)載均衡系統(tǒng)。作為調(diào)度器的NAT服務(wù)器可以將吞吐率提升到一個(gè)新的高度,幾乎是反向代理服務(wù)器的兩倍以上,這大多歸功于在內(nèi)核中進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)的較低開(kāi)銷。

但是一旦請(qǐng)求的內(nèi)容過(guò)大時(shí),不論是基于反向代理還是NAT,負(fù)載均衡的整體吞吐量都差距不大,這說(shuō)明對(duì)于一睦開(kāi)銷較大的內(nèi)容,使用簡(jiǎn)單的反向代理來(lái)搭建負(fù)載均衡系統(tǒng)是值考慮的。

這么強(qiáng)大的系統(tǒng)還是有它的瓶頸,那就是NAT服務(wù)器的網(wǎng)絡(luò)帶寬,包括內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)。

當(dāng)然如果你不差錢(qián),可以去花錢(qián)去購(gòu)買千兆交換機(jī)或萬(wàn)兆交換機(jī),甚至負(fù)載均衡硬件設(shè)備,但如果你是個(gè)屌絲,咋辦?

一個(gè)簡(jiǎn)單有效的辦法就是將基于NAT的集群和前面的DNS混合使用,比如5個(gè)100Mbps出口寬帶的集群,然后通過(guò)DNS來(lái)將用戶請(qǐng)求均衡地指向這些集群,同時(shí),你還可以利用DNS智能解析實(shí)現(xiàn)地域就近訪問(wèn)。

這樣的配置對(duì)于大多數(shù)業(yè)務(wù)是足夠了,但是對(duì)于提供下載或視頻等服務(wù)的大規(guī)模站點(diǎn),NAT服務(wù)器還是不夠出色。

直接路由(LVS-DR)

NAT是工作在網(wǎng)絡(luò)分層模型的傳輸層(第四層),而直接路由是工作在數(shù)據(jù)鏈路層(第二層),貌似更屌些。

它通過(guò)修改數(shù)據(jù)包的目標(biāo)MAC地址(沒(méi)有修改目標(biāo)IP),將數(shù)據(jù)包轉(zhuǎn)發(fā)到實(shí)際服務(wù)器上,不同的是,實(shí)際服務(wù)器的響應(yīng)數(shù)據(jù)包將直接發(fā)送給客戶羰,而不經(jīng)過(guò)調(diào)度器。

1、網(wǎng)絡(luò)設(shè)置

這里假設(shè)一臺(tái)負(fù)載均衡調(diào)度器,兩臺(tái)實(shí)際服務(wù)器,購(gòu)買三個(gè)外網(wǎng)ip,一臺(tái)機(jī)一個(gè),三臺(tái)機(jī)的默認(rèn)網(wǎng)關(guān)需要相同,***再設(shè)置同樣的ip別名,這里假設(shè)別名為10.10.120.193。

這樣一來(lái),將通過(guò)10.10.120.193這個(gè)IP別名來(lái)訪問(wèn)調(diào)度器,你可以將站點(diǎn)的域名指向這個(gè)IP別名。

2、將ip別名添加到回環(huán)接口lo上

這是為了讓實(shí)際服務(wù)器不要去尋找其他擁有這個(gè)IP別名的服務(wù)器,在實(shí)際服務(wù)器中運(yùn)行:

負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些

另外還要防止實(shí)際服務(wù)器響應(yīng)來(lái)自網(wǎng)絡(luò)中針對(duì)IP別名的ARP廣播,為此還要執(zhí)行:

  • echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

  • echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

  • echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

  • echo "1" > /proc/sys/net/ipv4/conf/all/arp_announce

配置完了就可以使用ipvsadm配置LVS-DR集群了

  • ipvsadm -A -t 10.10.120.193:80 -s rr

  • ipvsadm -a -t 10.10.120.193:80 -r 10.10.120.210:8000 -g

  • ipvsadm -a -t 10.10.120.193:80 -r 10.10.120.211:8000 -g

-g 就意味著使用直接路由的方式轉(zhuǎn)發(fā)數(shù)據(jù)包

LVS-DR  相較于LVS-NAT的***優(yōu)勢(shì)在于LVS-DR不受調(diào)度器寬帶的限制,例如假設(shè)三臺(tái)服務(wù)器在WAN交換機(jī)出口寬帶都限制為10Mbps,只要對(duì)于連接調(diào)度器和兩臺(tái)實(shí)際服務(wù)器的LAN交換機(jī)沒(méi)有限速。

那么,使用LVS-DR理論上可以達(dá)到20Mbps的***出口寬帶,因?yàn)樗膶?shí)際服務(wù)器的響應(yīng)數(shù)據(jù)包可以不經(jīng)過(guò)調(diào)度器而直接發(fā)往用戶端啊,所以它與調(diào)度器的出口寬帶沒(méi)有關(guān)系,只能自身的有關(guān)系。

而如果使用LVS-NAT,集群只能***使用10Mbps的寬帶。所以,越是響應(yīng)數(shù)據(jù)包遠(yuǎn)遠(yuǎn)超過(guò)請(qǐng)求數(shù)據(jù)包的服務(wù),就越應(yīng)該降低調(diào)度器轉(zhuǎn)移請(qǐng)求的開(kāi)銷,也就越能提高整體的擴(kuò)展能力,最終也就越依賴于WAN出口寬帶。

總的來(lái)說(shuō),LVS-DR適合搭建可擴(kuò)展的負(fù)載均衡系統(tǒng),不論是Web服務(wù)器還是文件服務(wù)器,以及視頻服務(wù)器,它都擁有出色的性能。前提是你必須為實(shí)際器購(gòu)買一系列的合法IP地址。

IP 隧道(LVS-TUN)

基于IP隧道的請(qǐng)求轉(zhuǎn)發(fā)機(jī)制:將調(diào)度器收到的IP數(shù)據(jù)包封裝在一個(gè)新的IP數(shù)據(jù)包中,轉(zhuǎn)交給實(shí)際服務(wù)器,然后實(shí)際服務(wù)器的響應(yīng)數(shù)據(jù)包可以直接到達(dá)用戶端。

目前Linux大多支持,可以用LVS來(lái)實(shí)現(xiàn),稱為L(zhǎng)VS-TUN,與LVS-DR不同的是,實(shí)際服務(wù)器可以和調(diào)度器不在同一個(gè)WANt網(wǎng)段,調(diào)度器通過(guò)IP隧道技術(shù)來(lái)轉(zhuǎn)發(fā)請(qǐng)求到實(shí)際服務(wù)器,所以實(shí)際服務(wù)器也必須擁有合法的IP地址。

以上就是“負(fù)載均衡技術(shù)的實(shí)現(xiàn)方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI