Web 負載均衡

一、HTTP重定向

       1、介紹: 當HTTP代理想Web服務器請求某個URL後,Web服務器可以通過HTTP響應頭信息中的Location標記來返回一個新的URL,這意味着HTTP代理需要繼續請求這個新的URL,這樣便完成了自動跳轉。(HTTP 302、303、307狀態碼)。

       2、 轉移均衡方案:

      隨機轉移方案;

      RR(Round Robin)策略,輪叫調度,算法就是以輪叫的方式依次將請求調度不同的服務器,即每次調度執行 i = (i + 1) mod n,並選出第i臺服務器。算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度;Apache的mod_rewrite  模塊支持該策略。

       實際測試結果:隨機方案吞吐率約爲RR策略2倍。


二、DNS負載均衡

       DNS負載均衡的實現主要依賴於DNS服務器的設置,現在有很多DNS服務商完全支持多個A記錄的輪詢設置,可以根據需要來挑選(dig命令查看域名A記錄)。

三、反向代理負載均衡

        1、按照權重分配任務,使用nginx作爲反向代理服務器

        upstream backend {

                   server  ip1:port    weight = num1;

                   server  ip2:port    weight = num2;

       }

       2、 粘滯會話

              負載均衡調度器帶來的問題:當某臺後端服務器啓用了Session來本地化保存用戶的一些數據後,下次用戶的請求如果轉發給了

       其他後端服務器,將導致之前的Session數據無法訪問;後端服務器實現了一定的動態內容緩存,而毫無規律的轉發使得這些緩存的

      利用率下降。

             解決問題的方法就是粘about:newtab滯會話,關鍵在於設計持續性調度算法。

             將用戶的IP地址作爲識別標誌最爲合適,一些反向代理服務器對此  都有支持,比如nginx和HAProxy,它們可以將用戶的IP地址進行Hash計算並散列到不同的後端服務器上。 對於nginx,只需要在upstream中聲明ip_hash即可。

            或者利用cookie機制來設計持久性算法,比如調度器將某個後端服務器的編號追加寫給用戶的Cookies中。

            事實上,在後端服務器上保存Session數據和本地化緩存,不是好的設計,最好應採用分佈式session或者分佈式緩存等,讓後端服務器的應用盡量與本地無關。


四、 IP負載均衡  LVS-NAT

         常用Linux相關命令

         Netfilter是Linux一個模塊,在內核中維護着一些數據包過濾表,這些表包含了用於控制數據包過濾的規則。

         iptables 是工作在用戶空間 的一個命令行工具,通過其來對Netfilter的過濾表進行插入、修改或刪除等操作。

         ipvsadm  ip virtual server admin,工作性質類似netFilter,但它更專注於實現ip負載均衡。

         LVS  Linux Virtual Server

五、直接路由  LVS-DR

        直接路由方式下的負載均衡調度器工作在數據鏈路層。它通過修改數據包的目標MAC地址,將數據包轉發到實際服務器上,

  並且最重要的是,實際服務器的響應數據包將直接發送給用戶端,而不經過調度器。

        在此方式下,實際服務器必須直接接入外部網路。

        IP別名:爲網絡接口配置的更多的IP地址。一個網絡接口最多可以設置256個IP別名。

六、IP隧道 LVS-Tunneling

        它將調度器收到的IP數據包封裝在一個新的IP數據包中,轉交給實際服務器,然後實際服務器的響應數據包可以直接到達數據段。 與LVS-DR原理相似,不同的是實際服務器可以和調度器不在同一個WAN網段。

       

   

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章