1. 程式人生 > >Nginx負載均衡的5種方式

Nginx負載均衡的5種方式

宣告

Nginx共支援5種負載方式,以此來實現相關的請求流量分派。通過在不同機器上計算。最終結果返回使用者。
值得一提的是,以下負載方式,沒有經過博主驗證過,在實際使用使用待除錯。
有什麼錯誤發現,還望提醒!!!

圖解理解

這裡寫圖片描述

輪詢分派

upstream loop{
    server 127.0.0.1:8080
    server 127.0.0.1:7080
    server 127.0.0.1:6305
}
按照預設輪詢的方式進行負載,
假設後端server down掉,能自己剔除。
缺點:可靠性地,負載不均衡,機器效能可能不一致

權重分派

upstream loopweight{
    server
127.0.0.1:8080 weight = 5; server 127.0.0.2:7080 weight = 5; server 127.0.0.3:6305 weight = 10; }
考慮1和2的機器配置低,或者1和2的效能不如3的時候
這樣將3的權重設定大一些,更多的請求會被分配到3上。
為1和2分擔更多的請求。

IP雜湊

upstream iphash{
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.2:7080;
    server 127.0.0.3:6305;
}
這裡的IP說的是客戶端的出口IP,這樣經過 des_server_ip = hash(ip)
相應的ip在沒有down掉的情況下,肯定會hash到固定的ip上。

URL雜湊

upstream urlhash{
    server 127.0.0.1:8080;
    server 127.0.0.2:7080;
    server 127.0.0.3:6305;
    hash $request_uri;
    hash_method crc32;
}
按照URI進行雜湊,固定的URI Hash到固定的server上。

效能,相應時間分派

upstream iphash{
    server 127.0.0.1:8080;
    server 127.0.0.2:7080;
    server 127.0.0.3:6305;
    fair;
}
效能,相應時間分派:
按後端伺服器的響應時間來分配請求。響應時間短的優先分配。

down And backup

    upstream iphash{
        server 127.0.0.1:8080 down; #當前server不參與負載
        server 127.0.0.2:7080;
        server 127.0.0.3:6305 backup; #非backup的機器(參與負載的機器),down掉或者忙的時候,請求backup機器。備用機
        fair;
    }

應用

listen 80;
server_name www.domain.com
location ~^ /api{
    proxy_pass http://loopweight    #選擇一種你喜歡的負載策略