日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

就是要你懂负载均衡--lvs和转发模式

發布時間:2024/8/23 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 就是要你懂负载均衡--lvs和转发模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文希望闡述清楚LVS的各種轉發模式,以及他們的工作流程和優缺點,同時從網絡包的流轉原理上解釋清楚優缺點的來由,并結合阿里云的slb來說明優缺點。

如果對網絡包是怎么流轉的不太清楚,推薦先看這篇基礎:程序員的網絡知識 -- 一個網絡包的旅程,對后面理解LVS的各個轉發模式非常有幫助。

幾個術語和縮寫

cip:Client IP,客戶端地址 vip:Virtual IP,LVS實例IP rip:Real IP,后端RS地址 RS: Real Server 后端真正提供服務的機器 LB: Load Balance 負載均衡器 LVS: Linux Virtual Server sip: source ip dip: destination

LVS的幾種轉發模式

  • DR模型 -- (Director Routing-直接路由)
  • NAT模型 -- (NetWork Address Translation-網絡地址轉換)
  • fullNAT -- (full NAT)
  • ENAT --(enhence NAT 或者叫三角模式/DNAT,阿里云提供)
  • IP TUN模型 -- (IP Tunneling - IP隧道)

DR模型(Director Routing--直接路由)

如上圖所示基本流程(假設 cip 是200.200.200.2, vip是200.200.200.1):

  • 請求流量(sip 200.200.200.2, dip 200.200.200.1) 先到達 LVS
  • 然后LVS,根據負載策略挑選眾多 RS中的一個,然后將這個網絡包的MAC地址修改成這個選中的RS的MAC
  • 然后丟給交換機,交換機將這個包丟給選中的RS
  • 選中的RS看到MAC地址是自己的、dip也是自己的,愉快地手下并處理、回復
  • 回復包(sip 200.200.200.1, dip 200.200.200.2)
  • 經過交換機直接回復給client了(不再走LVS)
  • 我們看到上面流程,請求包到達LVS后,LVS只對包的目的MAC地址作了修改,回復包直接回給了client。

    同時還能看到多個RS和LVS都共用了同一個IP但是用的不同的MAC,在二層路由不需要IP,他們又在同一個vlan,所以這里沒問題。

    RS上會將vip配置在lo回環網卡上,同時route中添加相應的規則,這樣在第四步收到的包能被os正常處理。

    優點:

    • DR模式是性能最好的一種模式,入站請求走LVS,回復報文繞過LVS直接發給Client

    缺點:

    • 要求LVS和rs在同一個vlan;
    • RS需要配置vip同時特殊處理arp;
    • 不支持端口映射。

    為什么要求LVS和RS在同一個vlan(或者說同一個二層網絡里)

    因為DR模式依賴多個RS和LVS共用同一個VIP,然后依據MAC地址來在LVS和多個RS之間路由,所以LVS和RS必須在一個vlan或者說同一個二層網絡里

    DR 模式為什么性能最好

    因為回復包不走LVS了,大部分情況下都是請求包小,回復包大,LVS很容易成為流量瓶頸,同時LVS只需要修改進來的包的MAC地址。

    DR 模式為什么回包不需要走LVS了

    因為RS和LVS共享同一個vip,回復的時候RS能正確地填好sip為vip,不再需要LVS來多修改一次(后面講的NAT、Full NAT都需要)

    總結下 DR的結構

    綠色是請求包進來,紅色是修改過MAC的請求包

    NAT模型(NetWork Address Translation - 網絡地址轉換)

    nat模式的結構圖如下:

    基本流程:

  • client發出請求(sip 200.200.200.2,dip 200.200.200.1)
  • 請求包到達lvs,lvs修改請求包為(sip 200.200.200.2, dip rip)
  • 請求包到達rs, rs回復(sip rip,dip 200.200.200.2)
  • 這個回復包不能直接給client,因為rip不是VIP會被reset掉
  • 但是因為lvs是網關,所以這個回復包先走到網關,網關有機會修改sip
  • 網關修改sip為VIP,修改后的回復包(sip 200.200.200.1,dip 200.200.200.2)發給client
  • 優點:

    • 配置簡單
    • 支持端口映射(看名字就知道)
    • RIP一般是私有地址,主要用戶LVS和RS之間通信

    缺點:

    • LVS和所有RS必須在同一個vlan
    • 進出流量都要走LVS轉發
    • LVS容易成為瓶頸
    • 一般而言需要將VIP配置成RS的網關

    為什么NAT要求lvs和RS在同一個vlan

    因為回復包必須經過lvs再次修改sip為vip,client才認,如果回復包的sip不是client包請求的dip(也就是vip),那么這個連接會被reset掉。如果LVS不是網關,因為回復包的dip是cip,那么可能從其它路由就走了,LVS沒有機會修改回復包的sip

    總結下NAT結構

    注意這里LVS修改進出包的(sip, dip)的時候只改了其中一個,所以才有接下來的full NAT。當然NAT最大的缺點是要求LVS和RS必須在同一個vlan,這樣限制了LVS集群和RS集群的部署靈活性,尤其是在阿里云這種對外售賣的公有云環境下,NAT基本不實用。

    full NAT模型(full NetWork Address Translation-全部網絡地址轉換)

    基本流程(類似NAT):

  • client發出請求(sip 200.200.200.2 dip 200.200.200.1)
  • 請求包到達lvs,lvs修改請求包為(sip 200.200.200.1, dip rip)?注意這里sip/dip都被修改了
  • 請求包到達rs, rs回復(sip rip,dip 200.200.200.1)
  • 這個回復包的目的IP是VIP(不像NAT中是 cip),所以LVS和RS不在一個vlan通過IP路由也能到達lvs
  • lvs修改sip為vip, dip為cip,修改后的回復包(sip 200.200.200.1,dip 200.200.200.2)發給client
  • 優點:

    • 解決了NAT對LVS和RS要求在同一個vlan的問題,適用更復雜的部署形式

    缺點:

    • RS看不到cip(NAT模式下可以看到)
    • 進出流量還是都走的lvs,容易成為瓶頸(跟NAT一樣都有這個問題)

    為什么full NAT解決了NAT中要求的LVS和RS必須在同一個vlan的問題

    因為LVS修改進來的包的時候把(sip, dip)都修改了(這也是full的主要含義吧),RS的回復包目的地址是vip(NAT中是cip),所以只要vip和rs之間三層可通就行,這樣LVS和RS可以在不同的vlan了,也就是LVS不再要求是網關,從而LVS和RS可以在更復雜的網絡環境下部署。

    為什么full NAT后RS看不見cip了

    因為cip被修改掉了,RS只能看到LVS的vip,在阿里內部會將cip放入TCP包的Option中傳遞給RS,RS上一般部署自己寫的toa模塊來從Options中讀取的cip,這樣RS能看到cip了, 當然這不是一個開源的通用方案。

    總結下full NAT的結構

    注意上圖中綠色的進包和紅色的出包他們的地址變化

    那么到現在full NAT解決了NAT的同vlan的要求,基本上可以用于公有云了,但是還是沒解決進出流量都走LVS的問題(LVS要修改進出的包)

    那么有沒有一個方案能夠像full NAT一樣不限制lvs和RS之間的網絡關系,同時出去的流量跟DR模式一樣也不走LVS呢?

    阿里云的ENAT模式(enhence NAT)

    優點:

    • 不要求LVS和RS在同一個vlan
    • 出去的流量不需要走LVS,性能好

    缺點:

    • 集團實現的自定義方案,需要在所有RS上安裝ctk組件(類似full NAT中的toa)

    基本流程:

  • client發出請求(cip,vip)
  • 請求包到達lvs,lvs修改請求包為(vip,rip),并將cip放入TCP Option中
  • 請求包根據ip路由到達rs, ctk模塊讀取TCP Option中的cip
  • 回復包(RIP, vip)被ctk模塊截獲,并將回復包改寫為(vip, cip)
  • 因為回復包的目的地址是cip所以不需要經過lvs,可以直接發給client
  • ENAT模式在內部也會被稱為 三角模式或者DNAT/SNAT模式

    為什么ENAT的回復包不需要走回LVS了

    因為之前full NAT模式下要走回去是需要LVS再次改寫回復包的IP,而ENAT模式下,這件事情在RS上被ctk模塊提前做掉了

    為什么ENAT的LVS和RS可以在不同的vlan

    跟full NAT一樣

    總結下 ENAT的結構

    最后說一下不太常用的 TUN模型

    IP TUN模型(IP Tunneling - IP隧道)

    基本流程:

  • 請求包到達LVS后,LVS將請求包封裝成一個新的IP報文
  • 新的IP包的目的IP是某一RS的IP,然后轉發給RS
  • RS收到報文后IPIP內核模塊解封裝,取出用戶的請求報文
  • 發現目的IP是VIP,而自己的tunl0網卡上配置了這個IP,從而愉快地處理請求并將結果直接發送給客戶
  • 優點:

    • 集群節點可以跨vlan
    • 跟DR一樣,響應報文直接發給client

    缺點:

    • RS上必須安裝運行IPIP模塊
    • 多增加了一個IP頭
    • LVS和RS上的tunl0虛擬網卡上配置同一個VIP(類似DR)

    DR模式中LVS修改的是目的MAC

    為什么IP TUN不要求同一個vlan

    因為IP TUN中不是修改MAC來路由,所以不要求同一個vlan,只要求lvs和rs之間ip能通就行。DR模式要求的是lvs和RS之間廣播能通

    IP TUN性能

    回包不走LVS,但是多做了一次封包解包,不如DR好

    總結下 IP TUN的結構

    圖中紅線是再次封裝過的包,ipip是操作系統的一個內核模塊。

    DR可能在小公司用的比較多,IP TUN用的少一些,相對而言接下來的三種比較類似,用的也比較多,他們之間的可比較性很強,所以放在一塊了。

    原文鏈接
    本文為云棲社區原創內容,未經允許不得轉載。

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的就是要你懂负载均衡--lvs和转发模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。