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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

負載均衡能否能直接從LVS打到站點層

開關電源芯片 ? 來源:碼海 ? 作者:坤哥 ? 2021-08-17 10:29 ? 次閱讀

上一篇負載均衡的文章有一個點不少人有疑問,所以我覺得有必要單獨寫篇文章解釋一下,先看下上篇文章展示的架構圖:

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

這里一些朋友的疑問點是 Nginx 是否多此一舉,能否能直接從 LVS 打到站點層?即改成下面的架構

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

答案是不行,為什么?其實我在上文中有提到一些點已經(jīng)暗示了,只不過不那么明顯而已,我再單獨把這些點拎出來

LVS 是四層負載均衡器

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

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

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

由于 LVS 不能根據(jù) url 轉發(fā),那么請問 LVS 收到請求后該轉給誰

那么 LVS 為什么不能根據(jù) url 來轉發(fā)呢,因為它是四層負載均衡器,什么是四層和七層,這里就要簡單復習下 ISO 七層參考模型了

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

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

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ù)陌荒艹^ 14 + 20 + 20 + 1460 + 4 = 1518 byte,其中包含的應用層(即 payload)數(shù)據(jù)一次性不能超過 1460 個 byte,也就是說如果一個 HTTP 請求有 2000 byte,那么它必須分成兩個包發(fā)送才能在網(wǎng)絡上傳輸,再來看看 HTTP 的格式

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

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

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

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

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

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

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

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

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

upstream backend {

server 192.168.1.10:8080

server 192.168.1.11:8080

}

server {

location /operation {

proxy_pass http://backed

}

}

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

責任編輯:haq

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

    關注

    0

    文章

    98

    瀏覽量

    12337
  • LVS
    LVS
    +關注

    關注

    1

    文章

    35

    瀏覽量

    9897

原文標題:再談負載均衡

文章出處:【微信號:gh_3980db2283cd,微信公眾號:開關電源芯片】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    負載均衡服務由幾部分組成?分別是什么

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

    OPA549能否帶容性負載?

    我的客戶目前想用OPA549來做1路可調(diào)輸出電壓,輸出范圍1~24V,輸出電流8A,負載為容性負載, 1)不知道這款芯片能否帶容性負載? 2)輸出電壓的紋波怎么樣?如果供電是27V/
    發(fā)表于 08-16 14:09

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

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

    如何直接phy mac發(fā)送和接收802.11數(shù)據(jù)包?

    我閱讀了完整的文檔(espressif_iot_esp8266ex_development_kit_v0.9.4.zip),但我沒有找到答案: 是否可以訪問 802.11 數(shù)據(jù)包,并通過應用程序處理它們? 我希望能夠直接 phy mac
    發(fā)表于 07-15 08:03

    使用iconview控件時,能否直接sd卡中讀取bmp格式的圖片進行顯示啊 ?

    請教下,使用 iconview 控件時,能否直接sd卡中讀取bmp格式的圖片進行顯示啊 ? 我看很多貌似都是 先把 圖片文件轉換為 .c 或者是 .dat 格式的,有沒有什么方法在
    發(fā)表于 04-28 08:11

    基于LVS+Keepalived實現(xiàn)高可用負載均衡

    LVS 是一種預裝在 Linux 系統(tǒng)中,基于四、具有強大性能的反向代理服務器。ipvsadm 是 LVS 的命令行管理工具。
    的頭像 發(fā)表于 04-09 12:30 ?773次閱讀
    基于<b class='flag-5'>LVS</b>+Keepalived實現(xiàn)高可用<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>

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

    域名并返回多個服務器的IP地址列表,客戶端會根據(jù)DNS返回的IP地址進行請求。這種方式簡單易用,但無法直接控制請求的分配,且存在DNS緩存問題。另外,由于DNS解析的緩存時間,可能導致負載均衡。 2、硬件
    的頭像 發(fā)表于 04-01 17:36 ?459次閱讀

    是德科技與英特爾攜手完成負載均衡單節(jié)點2100萬連接新建性能測試

    2024年1月18日,是德科技(Keysight Technologies,Inc.)與英特爾攜手完成負載均衡產(chǎn)品單節(jié)點2100萬連接新建性能測試。英特爾提供軟硬件結合優(yōu)化的四負載
    的頭像 發(fā)表于 01-18 14:11 ?464次閱讀
    是德科技與英特爾攜手完成<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>單節(jié)點2100萬連接新建性能測試

    負載均衡器的誕生和工作機制

    今天我們來深度揭秘一下負載均衡LVS 的秘密,相信大家看了你管這破玩意兒叫負載均衡?這篇文章后,還是有不少疑問,比如
    的頭像 發(fā)表于 01-04 12:26 ?798次閱讀
    <b class='flag-5'>負載</b><b class='flag-5'>均衡</b>器的誕生和工作機制

    如何確定適合的負載均衡比例

    路由器的負載均衡是一種應用于網(wǎng)絡中的技術,它可以平衡網(wǎng)絡流量的分配,提高網(wǎng)絡的性能和穩(wěn)定性。在配置路由器的負載均衡時,選擇合適的負載
    的頭像 發(fā)表于 12-15 10:36 ?1212次閱讀

    路由器負載均衡怎么配置

    路由器負載均衡是一種重要的網(wǎng)絡技術,它能夠?qū)⒍鄠€網(wǎng)絡連接的流量分配到多個路由器上,以提高網(wǎng)絡的性能和穩(wěn)定性。本文將詳細介紹路由器負載均衡的配置方法,包括
    的頭像 發(fā)表于 12-13 11:17 ?2574次閱讀

    RocketMQ生產(chǎn)者為什么需要負載均衡

    本文分析了RocketMQ生產(chǎn)者底層的實現(xiàn),設計地方有巧妙之處,值得我們學習,上面是發(fā)送非順序消息的場景, 如果是順序消息,我們作為使用者可以指定負載均衡策略。
    的頭像 發(fā)表于 11-13 11:04 ?363次閱讀
    RocketMQ生產(chǎn)者為什么需要<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>?

    Dubbo路由模塊及負載均衡的優(yōu)化手段

    本文主要介紹在vivo內(nèi)部針對Dubbo路由模塊及負載均衡的一些優(yōu)化手段,主要是異步化+緩存,可減少在RPC調(diào)用過程中路由及負載均衡的CPU消耗,極大提升調(diào)用效率。
    的頭像 發(fā)表于 11-02 09:56 ?620次閱讀
    Dubbo路由模塊及<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>的優(yōu)化手段

    深入了解不同負載均衡類型的優(yōu)缺點

    負載均衡類型是一種網(wǎng)絡流量管理的方法,它將流量有效地分發(fā)到多個服務器或資源,以提高系統(tǒng)性能、確保高可用性和可靠性。這些類型有不同的優(yōu)點和缺點,適用于不同的情況和需求,包括硬件、軟件和云解決方案。
    的頭像 發(fā)表于 10-30 09:49 ?1044次閱讀
    深入了解不同<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>類型的優(yōu)缺點

    常見的幾種負載均衡技術介紹

    在大力建設算力網(wǎng)絡的大背景下,隨著SDN思潮的深入推進、網(wǎng)絡集群的部署,負載均衡成為了一種不可或缺的技術,它在云,網(wǎng),邊都起了至關重要的作用。本文會對常見的幾種負載均衡技術進行介紹,同
    的頭像 發(fā)表于 09-25 10:30 ?1424次閱讀
    常見的幾種<b class='flag-5'>負載</b><b class='flag-5'>均衡</b>技術介紹