天天看點

nginx負載均衡算法

轉自:http://7424593.blog.51cto.com/7414593/1744111

一、Nginx負載均衡算法

    1、輪詢(預設)

        每個請求按時間順序逐一配置設定到不同的後端服務,如果後端某台伺服器當機,自動剔除故障系統,使使用者通路不受影響。

    2、weight(輪詢權值)

        weight的值越大配置設定到的通路機率越高,主要用于後端每台伺服器性能不均衡的情況下。或者僅僅為在主從的情況下設定不同的權值,達到合理有效的地利用主機資源。

    3、ip_hash

        每個請求按通路IP的哈希結果配置設定,使來自同一個IP的訪客固定通路一台後端伺服器,并且可以有效解決動态網頁存在的session共享問題。

    4、fair

        比 weight、ip_hash更加智能的負載均衡算法,fair算法可以根據頁面大小和加載時間長短智能地進行負載均衡,也就是根據後端伺服器的響應時間 來配置設定請求,響應時間短的優先配置設定。Nginx本身不支援fair,如果需要這種排程算法,則必須安裝upstream_fair子產品。

    5、url_hash

        按通路的URL的哈希結果來配置設定請求,使每個URL定向到一台後端伺服器,可以進一步提高後端緩存伺服器的效率。Nginx本身不支援url_hash,如果需要這種排程算法,則必須安裝Nginx的hash軟體包。

二、Nginx負載均衡排程狀态

  在Nginx upstream子產品中,可以設定每台後端伺服器在負載均衡排程中的狀态,常用的狀态有:

    1、down,表示目前的server暫時不參與負載均衡

    2、backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,是以這台機器的通路壓力最低

    3、max_fails,允許請求失敗的次數,預設為1,當超過最大次數時,傳回proxy_next_upstream子產品定義的錯誤。

    4、fail_timeout,請求失敗逾時時間,在經曆了max_fails次失敗後,暫停服務的時間。max_fails和fail_timeout可以一起使用。

三、Nginx負載均衡配置

在Nginx配置檔案的HTTP層添加upstream子產品

<code>http {</code>

<code>upstream webserver {</code>

<code>    </code><code>server 192.168.1.209:80 weight=2 max_fails=3 fail_timeout=10s;</code>

<code>    </code><code>server 192.168.1.250:80 weight=1 max_fails=3 fail_timeout=10s;</code>

<code>}</code>

<code>server {</code>

<code>    </code><code>listen       80;</code>

<code>    </code><code>server_name  www.huangming.org 192.168.1.21;</code>

<code>    </code><code>index index.html index.htm index.php index.jsp;</code>

<code>        </code><code>location / {</code>

<code>        </code><code>proxy_pass http:</code><code>//webserver</code><code>;</code>

<code>        </code><code>proxy_set_header Host   $host;</code>

<code>        </code><code>proxy_set_header X-Real-IP      $remote_addr;</code>

<code>        </code><code>proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</code>

<code>        </code><code>proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;</code>

<code>    </code><code>}</code>

<code>[root@www ~]</code><code># curl www.huangming.org</code>

<code>web2</code>

<code>web1</code>

上面的例子中的兩台RealServer分别為:

        192.168.1.209

        192.168.1.250

兩台RealServer都安裝Nginx作為後端web伺服器

    Nignx負載均衡功能是通過upstream子產品實作的,是基于内容和應用的7層交換負載均衡。Nginx負載均衡預設對後端伺服器有健康檢測能力,但是檢測能力較弱,僅限于端口檢測,在後端伺服器比較少的情況下(10台及以下)負載均衡能力表現突出。與LVS負載均衡相比,LVS是基于四層的IP負載均衡技術,具有高性能、高可用、吞吐量大等優點,LVS在叢集中表現更佳。

本文轉自飛奔的小GUI部落格51CTO部落格,原文連結http://blog.51cto.com/9237101/1907271如需轉載請自行聯系原作者

ziwenzhou

繼續閱讀