1. 程式人生 > 實用技巧 >(十) - 下載檔案

(十) - 下載檔案

Nginx 負載均衡詳解

首先說下 upstream 這個配置的,這個配置是寫一組被代理的伺服器地址,然後配置負載均衡的演算法。這裡的被代理伺服器地址有 2 中寫法。

upstream mysvr { 
    server 192.168.10.121:3333;
    server 192.168.10.122:3333;
}
server {
    ....
    location  ~*^.+$ {         
        proxy_pass  http://mysvr;  #請求轉向mysvr 定義的伺服器列表         
    }
}

然後,就來點實戰的東西。

1、熱備:如果你有 2 臺伺服器,當一臺伺服器發生事故時,才啟用第二臺伺服器給提供服務。伺服器處理請求的順序:AAAAAA 突然 A 掛啦,BBBBBBBBBBBBBB.....

upstream mysvr { 
    server 127.0.0.1:7878; 
    server 192.168.10.121:3333 backup;  #熱備     
}

2、輪詢:nginx 預設就是輪詢其權重都預設為 1,伺服器處理請求的順序:ABABABABAB....

upstream mysvr { 
    server 127.0.0.1:7878;
    server 192.168.10.121:3333;       
}

3、加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設定,則預設為 1。下面伺服器的請求順序為:ABBABBABBABBABB....

upstream mysvr { 
    server 127.0.0.1:7878 weight=1;
    server 192.168.10.121:3333 weight=2;
}

4、ip_hash:nginx 會讓相同的客戶端 ip 請求相同的伺服器。

upstream mysvr { 
    server 127.0.0.1:7878; 
    server 192.168.10.121:3333;
    ip_hash;
}

5、如果你對上面 4 種均衡演算法不是很理解,可以檢視 Nginx 配置詳解,可能會更加容易理解點。

到這裡你是不是感覺 nginx 的負載均衡配置特別簡單與強大,那麼還沒完,咱們繼續哈,這裡扯下蛋。

關於 nginx 負載均衡配置的幾個狀態引數講解。

  • down,表示當前的 server 暫時不參與負載均衡。
  • backup,預留的備份機器。當其他所有的非 backup 機器出現故障或者忙的時候,才會請求 backup 機器,因此這臺機器的壓力最輕。
  • max_fails,允許請求失敗的次數,預設為 1。當超過最大次數時,返回 proxy_next_upstream 模組定義的錯誤。
  • fail_timeout,在經歷了 max_fails 次失敗後,暫停服務的時間。max_fails 可以和 fail_timeout 一起使用。
upstream mysvr { 
    server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2;
    server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1;    
}