Nginx負載均衡策略

Nginx提供的負載均衡策略有2種:

內置策略和擴展策略。內置策略為輪詢(默認),加權輪詢,Ip hash,第三方。

一、熱備

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

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

二、負載均衡

1、輪詢:每個請求按照時間順序逐一的分配到每一個後臺服務器上。如果某臺服務器宕機了,將會自動的剔除宕機的服務。nginx默認就是輪詢其權重都默認為1,服務器處理請求的順序:ABABABABAB....

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

2、加權輪詢(weight):跟據配置的權重的大小而分發給不同服務器不同數量的請求。如果不設置,則默認為1。下面服務器的請求順序為:ABBABBABBABBABB....

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

3、IP哈希(ip_hash):nginx會讓相同的客戶端ip請求相同的服務器,可以解決session不共享的問題。

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

4、第三方(fair):Nginx本身不支持fair,如果需要這種調度算法,則必須安裝upstream_fair模塊。按後端服務器的響應時間來分配請求,響應時間短的優先分配。

upstream backend { 
 server 192.168.0.1:88; 
 server 192.168.0.2:80; 
 fair; 
}

5、第三方(url_hash):Nginx本身不支持url_hash,如果需要這種調度算法,則必須安裝Nginx的hash軟件包。按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器。

注意點:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法。

upstream backend { 
 server 192.168.0.1:88; 
 server 192.168.0.2:80; 
 hash $request_uri; 
 hash_method crc32; 
}
Nginx負載均衡策略


分享到:


相關文章: