一、概述
nginx的upstream目前支持的分配算法:
1、round-robin 輪詢1:1輪流處理請求(默認)
每個請求按時間順序逐一分配到不同的應用服務器,如果應用服務器down掉,自動剔除,剩下的繼續輪詢。
2、weight 權重(加權輪詢)
通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用于應用服務器性能不均的情況。
3、ip_hash 哈希算法
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用服務器,可以解決Session共享的問題。應用服務器如果故障需要手工down掉。
參數含義:
down:表示單前的server暫時不參與負載
weight:默認為1,weight越大,負載的權重就越大。
max_fails:允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤
fail_timeout:max_fails次失敗后,暫停的時間。
backup:其它所有的非backup機器down或者忙的時候,請求backup機器。
二、配置
?1、round-robin 輪詢(默認)
upstream?tg-t4?{ ????server?10.0.0.110:8099; ????server?10.0.0.110:8098; } server?{ ????listen?8096; ????server_name?www.tg-t4.com; ????location?/?{ ????proxy_pass?http://tg-t4; ????} }
訪問結果:ABABABABA
2、加權輪詢
upstream?tg-t4?{ ????server?10.0.0.110:8099?weight=2; ????server?10.0.0.110:8098?weight=5; } server?{ ????listen?8096; ????server_name?www.tg-t4.com; ????location?/?{ ????proxy_pass?http://tg-t4; ????} }
訪問結果:ABBABB ABBABB
注:weight影響的訪問結果是按最小比例算的,而不是理想狀態下:AABBBBB AABBBBB
3、ip_hash
upstream?tg-t4?{ ????server?10.0.0.110:8099; ????server?10.0.0.110:8098; ????ip_hash; } server?{ ????listen?8096; ????server_name?www.tg-t4.com; ????location?/?{ ????proxy_pass?http://tg-t4; ????} }
訪問結果:
IP1:AAAAAA
IP2:BBBBBB
4、熱備
upstream?tg-t4?{ ????server?10.0.0.110:8099; ????server?10.0.0.110:8098?backup; } server?{ ????listen?8096; ????server_name?www.tg-t4.com; ????location?/?{ ????proxy_pass?http://tg-t4; ????} }
訪問結果:
訪問1:兩個服務均正常。AAAAAA
訪問2:停用10.0.0.110:8099。BBBBBB
訪問3:重啟10.0.0.110:8099。AAAAAA
5、加參數優化
upstream?tg-t4?{ ????server?10.0.0.110:8099?weight=1?max_fails=2?fail_timeout=2; ????server?10.0.0.110:8098?weight=3?max_fails=2?fail_timeout=2?backup; } server?{ ????listen?8096; ????server_name?www.tg-t4.com; ????location?/?{ ????proxy_pass?http://tg-t4; ????} }
訪問結果:同4
backup優先級最高,當有了這個參數設定,那么所對應的服務只能作為熱備。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END