Nginx高性能web服務器之負載均衡(七)

    Nginx的負載均衡功能是經過upstream模塊實現的,因此它的負載均衡機制實現也簡單。它是一個基於內容和應用的7層交換負載均衡實現的。Nginx自己有健康檢測的能力,可是不強。僅僅侷限於端口的檢測,少許機器下負載能力表現比較好。若是有大量節點的話,因爲訪問請求都是從一臺服務器進出,因此很容易發生請求堵塞的問題。
html


1、Nginx負載均衡算法nginx

目前支持4種調度算法:web

輪詢(默認) 每一個請求按時間順序逐一分配到不一樣的後端服務器
weight(輪詢值) weight的值越大,分配的訪問概率就越高。通常用於後端服務器性能不均衡的狀況
ip_hash 每一個請求按訪問IP的哈希結果分配,來自同一個IP的訪客固定訪問一臺服務器,能夠解決session共享的問題
fair 依據頁面大小和加載時間長短智能的進行負載均衡,也就是根據後端服務器的響應時間來分配請求,響應時間短的優先分配。注意:Nginx自己是不支持fair算法的,要下載upstream_fair模塊
url_hash 按照訪問URL的哈希結果來分配請求。使得每一個URL定向到同一臺後端服務器,能夠進一步提升後端緩存服務器的效率。注意:Nginx自己是不支持url_hash算法的,要安裝hash軟件包

     在http upstream模塊中,能夠經過server命令指定後端服務器的IP地址和端口,同時能夠設定每臺後端服務器在負載均衡中的調度狀態。經常使用的狀態有以下:算法

down 表示當前的server不參與負載均衡
backup 預留的備份機器。當其餘非backup機器出現故障的時候,就會請求backup機器
max_fails 容許請求失敗的次數,默認爲1,當超過最大請求數的時候,返回proxy_next_upstream模塊定義的錯誤
fail_timeout 在經歷了max_fails失敗後,暫停服務的時間。

注意:當負載均衡的算法爲ip_hash的時候,後端服務器在負載均衡調度中的狀態不能是weight和backup後端


2、Nginx負載均衡配置實例緩存

   

 http {
     upstream myserver {
     server 192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
     server 192.168.12.182:80 weight=3 max_fails=3 fail_timeout=20s;
     server 192.168.12.183:80 weight=3 max_fails=3 fail_timeout=20s;
           }
      server {
       listen 80;
       server_name www.domain.com 192.168.12.189;    
       index index.htm index.html
       root /ixdba/web/root;
           } 
      location / {
        proxy_pass http://myserver; 
        proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
        include /opt/nginx/conf/proxy.conf;
           }
       }

   在上面的配置中,經過upstream命令指定了一個負載均衡器的名稱爲:myserver。這個名稱是任意指定的,在後面直接調用就能夠了。bash

   另外,proxy_next_upstream參數是用來定義故障轉移策略的,當後端服務節點返回500,502,503的時候,自動將請求轉發到upstream負載均衡組中的另外一臺服務器,從而實現故障轉移。服務器

相關文章
相關標籤/搜索