Nginx負載均衡策略

2021-09-20 06:58:02 字數 4067 閱讀 7142

上游伺服器集群的配置語法及說明

配置:upstream server***

預設:-

負載策略主要有以下幾種

策略說明

round robin(輪詢,支援加權設定)

將靖求輪流分配到不同的伺服器,支援加權設定,weight值越大分配機率越高

least_conn(最少連線數,支援加權設定)

請求優先**給當前連線數最少的伺服器

ip_hash按客戶端ip的hash結果進行分配,同一客戶端的請求將分配到同一伺服器。

演算法類似於:hashcode(ip) % 上游伺服器集群數量。

所以它受集群數量的影響,當upstream集群中有一台上游伺服器暫時不可用,不能直接刪除該配置,而是要down引數標識,確保**策略的一貫性

random(v > 1.15.1)

將請求隨機分配到伺服器,同時支援伺服器的權重設定

params主要有 

引數說明

weight

權重值,預設為1

max_conns

**伺服器最大的活動連線數,預設為0表示沒有限制

fail_timeout

該時間段內**失敗max_fails次後就認為上游伺服器暫時不可用,預設為10秒

max_fails

與fail_timeout配合使用,指在fail_timeout時間段內,如果向當前的上游伺服器**失敗次數超過max_fails次,則認為在當前的fail_timeout時間段內這台上游伺服器不可用。預設為1次

backup

將伺服器標記為備用伺服器,當所有主伺服器不可以用時,它才會接收請求。ip_hash負載策略下該配置無效。

down

將伺服器標記為不可用,即下線。只有在ip_hash策略下才有效

反向**配置及說明配置

location ...

輪詢(預設的負載策略)

最少連線配置與上類似,只是在upstream塊中,新增乙個least_conn標記;

upstream serverxx
再次訪問可從debug日誌中看出,nginx選用了least conn策略。 

ip_hashbackup表示該serve為備份伺服器,只有當主伺服器不可用時,它才會被傳遞請求,所以它不能算在ip_hash中有效服務節點中,這裡將它移除。測試結果證明,同一客戶端的請求對映到了同一上游伺服器

debug日誌如下,從中看出ip_hash策略生效

nginx**細節當客戶端發來http請求時,nginx並不會立刻**到上游伺服器,而是先把使用者的請求(包括http包體)完整地接收到nginx所在伺服器的硬碟或者記憶體中,然後再向上游伺服器發起連線,把快取的客戶端請求**到上游伺服器。而squid等**伺服器則採用一邊接收客戶端請求,一邊**到上游伺服器的方式。nginx的這種工作方式有什麼優缺點呢?很明顯,缺點是延長了乙個請求的處理時間,並增加了用於快取請求內容的記憶體和磁碟空間。而優點則是降低了上游伺服器的負載,盡量把壓力放在nginx伺服器上,上游伺服器不需要一開始就建立連線。

而且通常客戶端與**伺服器之間的網路會比較複雜,而**伺服器通常會與目標伺服器處於同一網段,也就是說,通常情況下公網的傳輸耗時會比內網多,不需要一開始就建立連線,也就意味著伺服器維護單個連線的時間在網路上就要短很多,當然對於客戶端來言總耗時是不變的。

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...

Nginx負載均衡策略

目前nginx負載均衡支援的5種方式的分配 輪詢每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除.1 2 3 4 upstream backserver weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況.1 2 3 4 upst...

NGinx負載均衡策略

原文 nginx的upstream目前支援的5種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。upstream backserver2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。upstr...