從零開始學習Linux:Day11 Nginx之均衡 upstream

爲什麼要做均衡?其目的是,將前端超高併發訪問轉發至後端多臺服務器進行處理。解決單點壓力過大,造成Web服務響應過慢,嚴重時可導致服務器癱瘓,客戶端無法訪問。
負載均衡有很多技術可以做到,軟件硬件都可以,硬件如F5,價格比較高,不是一般企業可以承受的。軟件上,比較專業的如LVS,keepalive等,今天主要分享的是nginx本身帶的負載均衡功能upstream,其功能是配置均衡池和調度方法。
以下來用upstream實現負載均衡實戰
三臺主機:

前端:192.168.68.128
後端1:192.168.68.129
後端2:172.18.8.176

首先配置前端192.168.68.128

#在http指令塊下增加
upstream web {
  server 192.168.68.129
    server 172.18.8.176
    }

從零開始學習Linux:Day11 Nginx之均衡 upstream

# location指令塊下配置proxy_pass代理
proxy_pass http://web

從零開始學習Linux:Day11 Nginx之均衡 upstream

然後配置後端兩臺服務器:192.168.68.129與172.18.8.176
訪問192.168.68.129時,返回主機ip
從零開始學習Linux:Day11 Nginx之均衡 upstream

訪問172.18.8.176時,也返回此主機的ip
從零開始學習Linux:Day11 Nginx之均衡 upstream

訪問前端192.168.68.128來測試:
從零開始學習Linux:Day11 Nginx之均衡 upstream

可以看到,後端主機採用輪詢方式工作,即訪問前端時,第一次後端176,第二次後端129,輪詢交替進行。
如果後端主機性能不一樣,有的配置較高,有的已經老舊,配置較低,採用上面輪詢方式顯然不符合負載均衡要求。解決這個問題的辦法是,採用比重的方式。
方法是在前端配置文件加入比重參數
從零開始學習Linux:Day11 Nginx之均衡 upstream
以上是訪問前端3次,都由後端192.168.68.129主機提供服務,第四次時再由後端主機:172.18.8.176主機提供服務,依次交替進行。
從零開始學習Linux:Day11 Nginx之均衡 upstream

以上解決了負責均衡,後端主機性能不一時,通地比重方式處理。

現在另一個問題來了,假如你正訪問購物網,看中一款商品,網頁一刷新,就被代理到臺端另一臺服務器上了。顯然這樣不符合實際的應用。希望是能識別主機,也就是:當一臺主機訪問前端,被代理到後臺一臺服務器後,以後就始終被代理到這臺服務器。這裏用到ip_hash 根據客戶端ip 請求分配到不同的服務器上。
從零開始學習Linux:Day11 Nginx之均衡 upstream
從零開始學習Linux:Day11 Nginx之均衡 upstream

假如後臺服務器,假如192.168.68.129掛了,會怎樣?會自動被代理到另一臺後端服務器上。
還可以用upstream建立備份服務器。比如

upstream web {

        server 192.168.68.129 weight=1 max_fails=3 fail_timeout=9s;
        server 172.18.8.176 weight=1 backup;
        }

上面將172.18.8.176作爲備用服務器,只有在192.168.68.129服務器掛了,不能用的時候,會自動頂上。

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