91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

負(fù)載均衡能否能直接從LVS打到站點(diǎn)層

開(kāi)關(guān)電源芯片 ? 來(lái)源:碼海 ? 作者:坤哥 ? 2021-08-17 10:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上一篇負(fù)載均衡的文章有一個(gè)點(diǎn)不少人有疑問(wèn),所以我覺(jué)得有必要單獨(dú)寫(xiě)篇文章解釋一下,先看下上篇文章展示的架構(gòu)圖:

4b41a5ba-fe81-11eb-9bcf-12bb97331649.png

這里一些朋友的疑問(wèn)點(diǎn)是 Nginx 是否多此一舉,能否能直接從 LVS 打到站點(diǎn)層?即改成下面的架構(gòu)

4b567bb6-fe81-11eb-9bcf-12bb97331649.jpg

答案是不行,為什么?其實(shí)我在上文中有提到一些點(diǎn)已經(jīng)暗示了,只不過(guò)不那么明顯而已,我再單獨(dú)把這些點(diǎn)拎出來(lái)

LVS 是四層負(fù)載均衡器

Nginx 是七層負(fù)載均衡器,可以根據(jù) url 來(lái)轉(zhuǎn)發(fā)流量

首先我們需要明白為什么根據(jù) url 轉(zhuǎn)發(fā)請(qǐng)求這么重要,假設(shè)現(xiàn)在有「營(yíng)銷(xiāo)」,「運(yùn)營(yíng)中心」這兩個(gè)集群,使用 Nginx 的話很簡(jiǎn)單,根據(jù) url 來(lái)決定到底將請(qǐng)求轉(zhuǎn)發(fā)到哪個(gè)集群即可

4b8463a0-fe81-11eb-9bcf-12bb97331649.jpg

由于 LVS 不能根據(jù) url 轉(zhuǎn)發(fā),那么請(qǐng)問(wèn) LVS 收到請(qǐng)求后該轉(zhuǎn)給誰(shuí)

那么 LVS 為什么不能根據(jù) url 來(lái)轉(zhuǎn)發(fā)呢,因?yàn)樗撬膶迂?fù)載均衡器,什么是四層和七層,這里就要簡(jiǎn)單復(fù)習(xí)下 ISO 七層參考模型了

4bb55438-fe81-11eb-9bcf-12bb97331649.jpg

由此可知,七層對(duì)應(yīng)著應(yīng)用層,四層對(duì)應(yīng)著傳輸層,如果從應(yīng)用層發(fā)起一個(gè)請(qǐng)求會(huì)在「?jìng)鬏攲印?,「網(wǎng)絡(luò)層」,「數(shù)據(jù)鏈路層」分別加上各自層的包頭,比如現(xiàn)在 A 電腦要發(fā)一個(gè)「I‘m Deepon」數(shù)據(jù)給 B 電腦,則在各層的轉(zhuǎn)化流程如下圖所示

4bd51fca-fe81-11eb-9bcf-12bb97331649.jpg

但最終在互聯(lián)網(wǎng)上要傳輸?shù)陌〝?shù)據(jù)鏈路層傳輸?shù)陌械?,統(tǒng)稱為包)是有大小限制的,如下圖所示

4be74f60-fe81-11eb-9bcf-12bb97331649.jpg

在互聯(lián)網(wǎng)上傳輸?shù)陌荒艹^(guò) 14 + 20 + 20 + 1460 + 4 = 1518 byte,其中包含的應(yīng)用層(即 payload)數(shù)據(jù)一次性不能超過(guò) 1460 個(gè) byte,也就是說(shuō)如果一個(gè) HTTP 請(qǐng)求有 2000 byte,那么它必須分成兩個(gè)包發(fā)送才能在網(wǎng)絡(luò)上傳輸,再來(lái)看看 HTTP 的格式

4bf14718-fe81-11eb-9bcf-12bb97331649.jpg

如果一個(gè) HTTP POST 請(qǐng)求很大,超過(guò)了 1460 byte(一個(gè)包 payload 的最大值),那么它必須分成兩個(gè)包才能傳輸,也就意味著一個(gè)包可能包含 URI,另一個(gè)包不包含 URI,既然包都不包含 URI,那么請(qǐng)問(wèn) LVS 如何根據(jù) URL 來(lái)轉(zhuǎn)發(fā)給相應(yīng)的集群呢,所以理解了 TCP/IP 的工作機(jī)制相信你不難理解開(kāi)頭的問(wèn)題:LVS 是四層負(fù)載均衡器,無(wú)法根據(jù) URL 來(lái)轉(zhuǎn)發(fā)請(qǐng)求。

其實(shí)最關(guān)鍵的原因是四層以下其實(shí)只負(fù)責(zé)包的轉(zhuǎn)發(fā),只要拿出包頭查看一下 ip 地址就可知道該轉(zhuǎn)發(fā)哪里,很高效,如果你還要根據(jù) url 來(lái)匹配那么需要拿到應(yīng)用層數(shù)據(jù)根據(jù)正則等做匹配,顯然會(huì)消耗更多的性能,所以專業(yè)的人做專業(yè)的事,應(yīng)該由 LVS 來(lái)負(fù)責(zé)承載所有流量,Nginx 負(fù)責(zé)根據(jù) url 來(lái)轉(zhuǎn)發(fā)給對(duì)應(yīng)的集群,因?yàn)樗瞧邔迂?fù)載均衡器,與上下游各建立了一個(gè) TCP 鏈接

4c088f04-fe81-11eb-9bcf-12bb97331649.jpg

所以如果有多個(gè)分包,由于 Nginx 與 client 建立了 TCP 連接,可以在 Nginx 先拿到 client 發(fā)出的所有的分包再組裝成完整的報(bào)文, 然后根據(jù) url 選擇其中一臺(tái) server 與之建立 TCP 連接后將數(shù)據(jù)分批完整地傳給上游 server

另外需要注意的是現(xiàn)在在大廠中如果只將 Nginx 作為轉(zhuǎn)發(fā)之用是不夠的,一般用的 OpenResty ,什么是 OpenResty 呢

“OpenResty 是一個(gè)基于 Nginx 與 Lua 的高性能 Web 平臺(tái),其內(nèi)部集成了大量精良的 Lua 庫(kù)、第三方模塊以及大多數(shù)的依賴項(xiàng)。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動(dòng)態(tài) Web 應(yīng)用、Web 服務(wù)和動(dòng)態(tài)網(wǎng)關(guān)。

OpenResty 的目標(biāo)是讓你的 Web 服務(wù)直接跑在 Nginx 服務(wù)內(nèi)部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對(duì) HTTP 客戶端請(qǐng)求,甚至于對(duì)遠(yuǎn)程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進(jìn)行一致的高性能響應(yīng)?!?/p>

注意上面一句「提供了與 MySQL ,Redis 等的交互能力」這一點(diǎn)非常關(guān)鍵,我們之前不是說(shuō) Nginx 可以根據(jù) url 來(lái)決定打向哪個(gè)集群?jiǎn)?,假設(shè)現(xiàn)在有一個(gè)這樣的場(chǎng)景:所有包含 operation 的請(qǐng)求都轉(zhuǎn)發(fā)到運(yùn)營(yíng)中心的集群,則需要寫(xiě)死類似如下的配置

upstream backend {

server 192.168.1.10:8080

server 192.168.1.11:8080

}

server {

location /operation {

proxy_pass http://backed

}

}

在我們集團(tuán)中類似這樣的規(guī)則非常多,難道要像上面這樣把所有的規(guī)則都一個(gè)個(gè)寫(xiě)死在 Nginx 的配置文件里嗎?顯然不可行,更合理的方式是把這些規(guī)則(哪個(gè) url 對(duì)應(yīng)哪些集群)保存在 MySQL 中,然后 Nginx 在啟動(dòng)的時(shí)候?qū)⑦@些規(guī)則從 MySQL 中取出并保存在 Redis 及本地緩存中,然后 Nginx 要根據(jù) url 匹配的時(shí)候從本地緩存(如果沒(méi)有從 redis 拿,redis 過(guò)期從 MySQL 拿)里拿這些規(guī)則再根據(jù)匹配項(xiàng)轉(zhuǎn)發(fā)到相應(yīng)的集群,Nginx 沒(méi)有這樣的能力,而 OpenResty 由于集成了 Lua,引入了與 MySQL, Redis 等交互的模塊,所以用它是可行的,所以最終架構(gòu)如下(將 Nginx 換成 OpenResty)

責(zé)任編輯:haq

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

    關(guān)注

    0

    文章

    133

    瀏覽量

    12875
  • LVS
    LVS
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    10476

原文標(biāo)題:再談負(fù)載均衡

文章出處:【微信號(hào):gh_3980db2283cd,微信公眾號(hào):開(kāi)關(guān)電源芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3576平臺(tái)Android HAL故障排查:lshal命令看透問(wèn)題本質(zhì)

    RK3576 作為瑞芯微主流的中高端芯片,其 HAL 基于 HIDL ( Android 硬件接口定義語(yǔ)言)實(shí)現(xiàn),排查這類問(wèn)題的核心工具就是 lshal —— 一個(gè)直接暴露 HIDL 服務(wù)運(yùn)行狀態(tài)的命令
    的頭像 發(fā)表于 02-06 07:12 ?184次閱讀
    RK3576平臺(tái)Android HAL<b class='flag-5'>層</b>故障排查:<b class='flag-5'>從</b>lshal命令看透問(wèn)題本質(zhì)

    阿里云SLB負(fù)載均衡配置指南

    當(dāng)業(yè)務(wù)流量超過(guò)單臺(tái)服務(wù)器的承載能力,或者需要實(shí)現(xiàn)服務(wù)的高可用時(shí),負(fù)載均衡成為必不可少的基礎(chǔ)設(shè)施。阿里云SLB(Server Load Balancer)作為國(guó)內(nèi)使用最廣泛的云負(fù)載均衡
    的頭像 發(fā)表于 01-30 17:47 ?1442次閱讀

    Nginx反向代理和負(fù)載均衡配置實(shí)戰(zhàn)

    負(fù)載均衡則是反向代理的進(jìn)階玩法。當(dāng)一臺(tái)后端服務(wù)器扛不住流量的時(shí)候,就需要多臺(tái)服務(wù)器一起分擔(dān)壓力。Nginx負(fù)責(zé)把請(qǐng)求分發(fā)到不同的服務(wù)器上,這就是負(fù)載均衡。
    的頭像 發(fā)表于 01-23 13:44 ?656次閱讀

    彈性負(fù)載均衡:現(xiàn)代 IT 架構(gòu)的高可用與高并發(fā)基石

    前言在數(shù)字化浪潮下,互聯(lián)網(wǎng)服務(wù)的訪問(wèn)量呈爆炸式增長(zhǎng),單臺(tái)服務(wù)器早已難以承載海量并發(fā)請(qǐng)求。此時(shí),負(fù)載均衡(LoadBalancing)技術(shù)應(yīng)運(yùn)而生,成為優(yōu)化資源分配、提升系統(tǒng)性能的核心支撐。作為現(xiàn)代
    的頭像 發(fā)表于 01-20 09:58 ?142次閱讀
    彈性<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>:現(xiàn)代 IT 架構(gòu)的高可用與高并發(fā)基石

    逐流、逐包、Flowlet:哪種負(fù)載均衡技術(shù)更適合未來(lái)網(wǎng)絡(luò)?

    當(dāng)前主流的負(fù)載均衡技術(shù)主要包括三種類型:逐流的ECMP負(fù)載均衡、逐包負(fù)載均衡以及基于子流(Flo
    的頭像 發(fā)表于 09-22 14:17 ?2770次閱讀
    逐流、逐包、Flowlet:哪種<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>技術(shù)更適合未來(lái)網(wǎng)絡(luò)?

    Nginx和HAProxy企業(yè)級(jí)負(fù)載均衡方案的對(duì)比

    想象一下,你的電商網(wǎng)站在雙十一當(dāng)天需要處理平時(shí)100倍的流量,單臺(tái)服務(wù)器顯然無(wú)法承受。這時(shí)候,負(fù)載均衡就像是一個(gè)智能的交通指揮員,將海量請(qǐng)求合理分配到多臺(tái)后端服務(wù)器,確保系統(tǒng)穩(wěn)定運(yùn)行。
    的頭像 發(fā)表于 09-18 15:01 ?807次閱讀

    燃料電池負(fù)載均衡測(cè)試:解鎖高效供密碼

    在新能源領(lǐng)域蓬勃發(fā)展的當(dāng)下,燃料電池憑借其清潔、高效的特性脫穎而出。而負(fù)載均衡測(cè)試作為確保燃料電池穩(wěn)定運(yùn)行與性能優(yōu)化的關(guān)鍵環(huán)節(jié),意義非凡。以下是一套全面且實(shí)用的燃料電池負(fù)載均衡測(cè)試方案
    發(fā)表于 09-18 13:51

    華納云:海外服務(wù)器負(fù)載均衡與高可用架構(gòu)設(shè)計(jì)

    在現(xiàn)代互聯(lián)網(wǎng)應(yīng)用中,海外服務(wù)器承擔(dān)著跨境業(yè)務(wù)、高并發(fā)請(qǐng)求和實(shí)時(shí)數(shù)據(jù)傳輸?shù)年P(guān)鍵角色。單臺(tái)服務(wù)器難以支撐大量并發(fā)請(qǐng)求,一旦發(fā)生故障,可能導(dǎo)致服務(wù)中斷和業(yè)務(wù)損失。因此,合理設(shè)計(jì)負(fù)載均衡與高可用架構(gòu),能夠
    的頭像 發(fā)表于 08-28 18:32 ?659次閱讀

    怎樣確定分布式光伏集群通信網(wǎng)絡(luò)的負(fù)載均衡策略?

    LZ-DZ100電能質(zhì)量在線監(jiān)測(cè)裝 確定分布式光伏集群通信網(wǎng)絡(luò)的負(fù)載均衡策略,需結(jié)合集群的網(wǎng)絡(luò)拓?fù)洹?shù)據(jù)特征、設(shè)備特性及運(yùn)行需求,通過(guò) “現(xiàn)狀分析→目標(biāo)設(shè)定→策略設(shè)計(jì)→驗(yàn)證優(yōu)化” 的流程逐步推進(jìn)
    的頭像 發(fā)表于 08-22 10:10 ?581次閱讀
    怎樣確定分布式光伏集群通信網(wǎng)絡(luò)的<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>策略?

    Nginx負(fù)載均衡策略選擇指南

    上個(gè)月,我們的電商系統(tǒng)在大促期間突然出現(xiàn)用戶購(gòu)物車(chē)數(shù)據(jù)丟失的問(wèn)題。經(jīng)過(guò)排查發(fā)現(xiàn),罪魁禍?zhǔn)拙谷皇?b class='flag-5'>負(fù)載均衡策略配置不當(dāng)!
    的頭像 發(fā)表于 08-20 16:23 ?921次閱讀

    電機(jī)帶負(fù)載直接用軸連接輸出力大還是用齒輪輸出力矩大?

    景等多個(gè)維度進(jìn)行綜合分析。 物理原理來(lái)看,直接軸連接實(shí)現(xiàn)了電機(jī)與負(fù)載的剛性耦合,其最大優(yōu)勢(shì)在于能量傳遞的高效性。當(dāng)電機(jī)通過(guò)聯(lián)軸器或法蘭直接驅(qū)動(dòng)負(fù)載
    的頭像 發(fā)表于 07-27 22:04 ?985次閱讀
    電機(jī)帶<b class='flag-5'>負(fù)載</b>是<b class='flag-5'>直接</b>用軸連接輸出力大還是用齒輪輸出力矩大?

    如何在多顯卡環(huán)境下配置OLLAMA實(shí)現(xiàn)GPU負(fù)載均衡

    本文將帶你深入了解如何在多顯卡環(huán)境下配置OLLAMA,實(shí)現(xiàn)GPU負(fù)載均衡,并分享生產(chǎn)環(huán)境中的最佳實(shí)踐。無(wú)論你是剛接觸GPU集群還是尋求性能優(yōu)化的老手,這篇文章都能給你帶來(lái)實(shí)用價(jià)值。
    的頭像 發(fā)表于 07-24 14:12 ?4003次閱讀

    一文詳解Nginx負(fù)載均衡

    Nginx作為負(fù)載均衡器,通過(guò)將請(qǐng)求分發(fā)到多個(gè)后端服務(wù)器,以提高性能、可靠性和擴(kuò)展性。支持多種負(fù)載均衡算法,如輪詢、最小連接數(shù)、IP哈希等,可以根據(jù)需求選擇適合的算法。
    的頭像 發(fā)表于 06-25 14:51 ?1088次閱讀
    一文詳解Nginx<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>

    和七負(fù)載均衡的核心區(qū)別

    在現(xiàn)代分布式系統(tǒng)和云計(jì)算架構(gòu)中,負(fù)載均衡(Load Balancing, LB)是確保高可用性、可擴(kuò)展性和性能優(yōu)化的關(guān)鍵技術(shù)。負(fù)載均衡器根據(jù)不同的OSI模型層級(jí)工作,主要分為四
    的頭像 發(fā)表于 05-29 17:42 ?1312次閱讀

    Kubernetes負(fù)載均衡器MetalLB介紹

    Kubernetes中一個(gè)應(yīng)用服務(wù)會(huì)有一個(gè)或多個(gè)實(shí)例,每個(gè)實(shí)例(Pod)的IP地址由網(wǎng)絡(luò)插件動(dòng)態(tài)隨機(jī)分配(Pod重啟后IP地址會(huì)改變)。為屏蔽這些后端實(shí)例的動(dòng)態(tài)變化和對(duì)多實(shí)例的負(fù)載均衡,引入了 Service這個(gè)資源對(duì)象。
    的頭像 發(fā)表于 03-18 16:24 ?935次閱讀
    Kubernetes<b class='flag-5'>負(fù)載</b><b class='flag-5'>均衡</b>器MetalLB介紹