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機器。
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
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
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
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
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優先權最高,當有了這個參數設定,那麼所對應的服務只能作為熱備。
以上是nginx如何實現負載平衡輪詢方式配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!