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; }