<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文詳解負(fù)載均衡和反向代理的真實(shí)區(qū)別

          共 3978字,需瀏覽 8分鐘

           ·

          2021-01-05 18:24

          點(diǎn)擊上方“開源Linux”,選擇“設(shè)為星標(biāo)”

          回復(fù)“學(xué)習(xí)”獲取獨(dú)家整理的學(xué)習(xí)資料!

          鏈接:

          https://www.zhihu.com/question/20553431/answer/130698230

          一、SLB 產(chǎn)生背景


          SLB(服務(wù)器負(fù)載均衡):在多個(gè)提供相同服務(wù)的服務(wù)器的情況下,負(fù)載均衡設(shè)備存在虛擬服務(wù)地址,當(dāng)大量客戶端從外部訪問虛擬服務(wù)IP地址時(shí),負(fù)載均衡設(shè)備將這些報(bào)文請(qǐng)求根據(jù)負(fù)載均衡算法,將流量均衡的分配給后臺(tái)服務(wù)器以平衡各個(gè)服務(wù)器的負(fù)載壓力,避免在還有服務(wù)器壓力較小情況下其他服務(wù)達(dá)到性能臨界點(diǎn)出現(xiàn)運(yùn)行緩慢甚至宕機(jī)情況,從而提高服務(wù)效率和質(zhì)量。

          因此對(duì)客戶端而言,RS(real server 實(shí)際服務(wù)器)的IP地址即是負(fù)載均衡設(shè)備VIP(虛擬服務(wù)地址IP)地址,真正的RS服務(wù)器IP地址對(duì)于客戶端是不可見的。

          二、SLB 的三種傳輸模式


          七層SLB和四層SLB的區(qū)別:

          四層SLB:配置負(fù)載均衡設(shè)備上服務(wù)類型為tcp/udp,負(fù)載均衡設(shè)備將只解析到4層,負(fù)載均衡設(shè)備與client三次握手之后就會(huì)和RS建立連接;

          七層SLB:配置負(fù)載均衡設(shè)備服務(wù)類型為 http/ftp/https 等,負(fù)載均衡設(shè)備將解析報(bào)文到7層,在負(fù)載均衡設(shè)備與client三次握手之后,只有收到對(duì)應(yīng)七層報(bào)文,才會(huì)跟RS建立連接。

          在負(fù)載均衡設(shè)備中,SLB主要工作在以下的三種傳輸模式中:
          • 反向代理模式
          • 透?jìng)髂J?/span>
          • 三角模式

          根據(jù)不同的模式,負(fù)載均衡設(shè)備的工作方式也不盡相同,但無論在哪種模式下,客戶端發(fā)起的請(qǐng)求報(bào)文總是需要先到達(dá)負(fù)載均衡設(shè)備進(jìn)行處理,這是負(fù)載均衡設(shè)備正常工作的前提。模擬網(wǎng)絡(luò)拓?fù)洵h(huán)境:

          • Client:10.8.21.40
          • 負(fù)載均衡設(shè)備:172.16.75.83
          • VIP:172.16.75.84
          • RS1IP:172.16.75.82
          • RS2IP:172.16.75.85
          在整個(gè)報(bào)文交互過程中,采用 Tcpdump 和 Wireshark 分別在 RS 和 Client 處抓包,然后使用 Wireshark 進(jìn)行報(bào)文解析。

          三、 反向代理模式


          反向代理:普通的代理設(shè)備是內(nèi)網(wǎng)用戶通過代理設(shè)備出外網(wǎng)進(jìn)行訪問,而工作在這種模式下的負(fù)載均衡設(shè)備,則是外網(wǎng)用戶通過代理設(shè)備訪問內(nèi)網(wǎng),因此稱之為反向代理。

          在反向代理模式下:

          當(dāng)負(fù)載均衡設(shè)備收到客戶端請(qǐng)求后,會(huì)記錄下此報(bào)文( 源IP地址、目的IP地址、協(xié)議號(hào)、源端口、目的端口,服務(wù)類型以及接口索引),將報(bào)文目的地址更改為優(yōu)選后的RS設(shè)備的IP地址,目的端口號(hào)不變,源地址修改為負(fù)載均衡設(shè)備下行與對(duì)應(yīng)RS設(shè)備接口的IP地址,源端口號(hào)隨機(jī)發(fā)送給RS;

          當(dāng)RS收到報(bào)文后,會(huì)以源為RS接口IP地址,目的IP設(shè)備地址回復(fù)給負(fù)載均衡設(shè)備,負(fù)載均衡設(shè)備將源修改為VIP,目的端口號(hào)修改為客戶端的源端口號(hào),目的IP修改為Client的源IP回復(fù)報(bào)文。

          查看報(bào)文解析結(jié)果:

          配置完成后,Client 訪問 RS 服務(wù)器,返回成功,整個(gè)報(bào)文交互過程如下 :


          Client和負(fù)載均衡設(shè)備之間的報(bào)文交互過程


          RS和負(fù)載均衡設(shè)備之間報(bào)文交互過程

          結(jié)果分析

          分析整個(gè)報(bào)文交互過程:

          TCP握手過程:首先Client向負(fù)載均衡設(shè)備發(fā)送TCP SYN報(bào)文請(qǐng)求建立連接,源IP為Client的IP 10.8.21.40,源端口號(hào)50894,目的IP為VIP地址172.16.75.84,目的端口號(hào)80;

          收到請(qǐng)求報(bào)文后,負(fù)載均衡設(shè)備會(huì)以源IP為VIP地址172.16.75.84,端口號(hào)80,目的IP 10.8.21.40,目的端口號(hào)50894回應(yīng)SYN ACK報(bào)文;

          Client收到報(bào)文后回復(fù)ACK報(bào)文,TCP三次握手成功。

          HTTP報(bào)文交互過程:

          當(dāng)負(fù)載均衡設(shè)備與client完成三次握手后,因?yàn)榕渲玫钠邔覵LB,如果收到HTTP請(qǐng)求,就會(huì)根據(jù)負(fù)載均衡算法和服務(wù)器健康狀態(tài)優(yōu)選出對(duì)應(yīng)的RS(在這次過程中選擇的RS設(shè)備為172.16.75.82),然后與RS建立TCP連接:

          負(fù)載均衡設(shè)備發(fā)送 TCP SYN 報(bào)文請(qǐng)求連接,源IP為負(fù)載均衡設(shè)備與RS相連接口IP 172.16.75.83,源端口號(hào)隨機(jī)4574,目的IP為RS的IP 172.16.75.82,目的端口號(hào)80;
          RS 收到報(bào)文后,以源 IP 172.16.75.82,端口號(hào)80,目的IP 172.16.75.83,目的端口號(hào)4574回復(fù)SYN ACK報(bào)文,負(fù)載均衡設(shè)備回復(fù)ACK報(bào)文建立三次握手;

          之后,負(fù)載均衡設(shè)備再將收到的HTTP報(bào)文源IP修改為與RS相連下行接口IP地址172.16.75.83,源端口號(hào)為隨機(jī)端口號(hào),將報(bào)文發(fā)送給RS;當(dāng)RS收到報(bào)文后,使用源為本地IP 172.16.75.82,目的IP為172.16.75.83進(jìn)行回復(fù),所以報(bào)文直接回復(fù)給負(fù)載均衡設(shè)備;

          當(dāng)負(fù)載均衡設(shè)備收到RS的回應(yīng)報(bào)文后,將報(bào)文的源修改為VIP地址172.16.75.84,目的IP為10.8.21.40發(fā)送回 Client,再將目的端口號(hào)修改為HTTP請(qǐng)求報(bào)文中的源端口號(hào),服務(wù)器訪問成功。


          由上述的過程可以看出,在RS端上,client的真實(shí)IP地址被負(fù)載設(shè)備修改成與RS相連接口的IP地址,所以RS無法記錄到Client的訪問記錄,為了解決這個(gè)問題,可以采用在HTTP報(bào)文頭中添加X-Forwarded-For字段。

          四、透?jìng)髂J?/span>


          當(dāng)負(fù)載均衡設(shè)備工作在透?jìng)髂J街袝r(shí),RS無法感知到負(fù)載均衡設(shè)備的存在,對(duì)于Client來說,RS的IP地址就是負(fù)載均衡設(shè)備的VIP地址。

          在這種模式下,當(dāng)負(fù)載均衡設(shè)備收到源為 Client 的 IP,目的 IP 為本地 VIP 地址的報(bào)文時(shí),會(huì)將報(bào)文根據(jù)負(fù)載均衡策略和健康狀況發(fā)送給最優(yōu)的 RS 設(shè)備上,繼而RS設(shè)備會(huì)收到目的為本地IP,源為Client實(shí)際IP的請(qǐng)求報(bào)文;

          然后RS將會(huì)直接回應(yīng)此請(qǐng)求,報(bào)文的目的 IP 地址為 Client 的 IP 地址,當(dāng)負(fù)載均衡設(shè)備收到此報(bào)文后,將源 IP 地址修改為 VIP 地址,然后將報(bào)文發(fā)送給 Client。

          報(bào)文解析結(jié)果:

          同樣在 RS 端和 Client 端抓取交互報(bào)文:


          Client 和負(fù)載均衡設(shè)備之間的報(bào)文交互過程


          RS和負(fù)載均衡設(shè)備之間的報(bào)文交互過程


          結(jié)果分析:


          TCP握手過程:同反向代理模式交互過程


          HTTP報(bào)文交互過程:


          Client向負(fù)載均衡設(shè)備的VIP地址172.16.75.84以源IP 10.8.21.40發(fā)送HTTP請(qǐng)求,當(dāng)負(fù)載均衡設(shè)備收到報(bào)文后,與優(yōu)選后的RS進(jìn)行TCP三次握手,過程同反向代理模式,然后將收到的HTTP報(bào)文,不改變報(bào)文的源IP地址和源/目的端口號(hào),只修改目的IP修改為優(yōu)選后的RS地址172.16.75.82;


          當(dāng)RS收到源來自IP 10.8.21.40的報(bào)文后,回復(fù)報(bào)文給IP地址10.8.21.40,此時(shí)要注意,必須在RS上配置回復(fù)報(bào)文經(jīng)過負(fù)載均衡設(shè)備,負(fù)載均衡設(shè)備會(huì)將源IP修改為VIP地址172.16.75.84,然后轉(zhuǎn)發(fā)給Client,否則Client將會(huì)收到源IP為172.16.75.82的HTTP報(bào)文,服務(wù)器訪問失敗。



          五、 三角模式


          在三角模式下,當(dāng)客戶端發(fā)送請(qǐng)求到負(fù)載設(shè)備上時(shí),負(fù)載均衡設(shè)備會(huì)計(jì)算出最優(yōu)RS,然后直接根據(jù)MAC地址將報(bào)文轉(zhuǎn)發(fā)給RS,在RS上配置報(bào)文的源IP為VIP地址(一般配置在loopback口上),因此在這種情況下,RS會(huì)直接將報(bào)文發(fā)送給Client,即使回復(fù)報(bào)文經(jīng)過負(fù)載均衡設(shè)備,此設(shè)備不做任何處理。由于報(bào)文在整個(gè)過程中傳輸途徑類似于三角形,因此稱之為三角模式。

          報(bào)文解析結(jié)果

          分別在Client端和RS端抓包,內(nèi)容如下:


          Client和負(fù)載均衡設(shè)備之間的報(bào)文交互過程


          RS 和負(fù)載均衡設(shè)備之間的報(bào)文交互過程

          結(jié)果分析


          TCP握手過程:

          由于采用了4層SLB,所以在TCP握手過程中與上述的7層SLB有些不同,當(dāng)Client和RS完成三次握手之后,此時(shí)負(fù)載均衡設(shè)備會(huì)直接選擇RS,然后跟RS建立TCP三次握手;

          在三角模式環(huán)境中,由于RS的Loopback口和負(fù)載均衡設(shè)備上都存在著VIP地址172.16.75.84,當(dāng)負(fù)載均衡設(shè)備經(jīng)過負(fù)載均衡算法選擇出對(duì)應(yīng)的RS后,會(huì)根據(jù)實(shí)際配置的RS的IP地址對(duì)應(yīng)的mac地址,將報(bào)文以目的mac為RS,目的IP為VIP的方式建立TCP連接。

          HTTP報(bào)文交互過程:


          首先Client向負(fù)載均衡設(shè)備的VIP發(fā)送HTTP請(qǐng)求,源為10.8.21.40,當(dāng)負(fù)載均衡設(shè)備收到報(bào)文后,將報(bào)文直接轉(zhuǎn)發(fā)給RS,當(dāng)RS收到源IP為10.8.21.40,目的IP為本地Loopback口IP地址172.16.75.84的報(bào)文后,直接將報(bào)文回復(fù)給10.8.21.40,同樣源為IP地址172.16.75.84,由此訪問服務(wù)器成功。

          在三角模式中,由于回復(fù)報(bào)文負(fù)載均衡設(shè)備不做任何處理,所以非常適合于RS到Client方向流量較大或者連接數(shù)目較多的組網(wǎng)環(huán)境。

          采用三角模式時(shí),必須注意RS有路由可以到達(dá)Client,并且在RS的Loopback接口上必須有負(fù)載均衡設(shè)備的VIP地址,否則即使RS設(shè)備收到Client的請(qǐng)求報(bào)文也會(huì)直接丟棄報(bào)文,不作回應(yīng)。

          六、總結(jié)


          由于反向代理模式中在RS側(cè)只能收到源為負(fù)載均衡設(shè)備IP的報(bào)文,因此可以使用防火墻增加安全性,只允許源IP為負(fù)載均衡設(shè)備的IP地址的報(bào)文通過,同時(shí)增加X-Forwarded-For字段也可以讓RS只允許有此字段的報(bào)文進(jìn)行訪問,因此安全性相對(duì)較高。

          - End -

          關(guān)注「開源Linux」加星標(biāo),提升IT技能

            瀏覽 22
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            評(píng)論
            圖片
            表情
            推薦
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            <kbd id="afajh"><form id="afajh"></form></kbd>
            <strong id="afajh"><dl id="afajh"></dl></strong>
              <del id="afajh"><form id="afajh"></form></del>
                  1. <th id="afajh"><progress id="afajh"></progress></th>
                    <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    视频黄在线观看免费 | 波多野结衣中文字幕久久 | 乱伦视频国产 | 学生妹一级内射 | 大黑鸡巴操逼 |