Nginx負載平衡詳解,nginx負載平衡
upstream mysvr {
server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass http://mysvr; #請求轉向mysvr 定義的伺服器列表 }
upstream mysvr {
server http://192.168.10.121:3333; server http://192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass 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負載平衡配置的幾個狀態參數講解。
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; }