1. 程式人生 > 其它 >Nginx配置負載均衡

Nginx配置負載均衡

一、負載均衡

負載均衡就是將負載(工作任務,訪問請求)進行平衡、分攤到多個操作單元(伺服器,元件)上進行執行。是解決高效能,單點故障(高可用),擴充套件性(水平伸縮)的終極解決方案。

 

二、反向代理與正向代理

反向代理:代理的是伺服器端

正向代理:代理的是客戶端

三、負載均衡策略

(一)輪詢(預設)。每個請求,按時間順序逐一分配到不同的後端應用伺服器節點,如果後端服務出現故障,nginx能夠自動剔除該節點。如:

  1、在server模組中,配置nginx地址、埠以及負載服務。

  

 

  2、在http中,server模組外,進行負載均衡負載伺服器輪詢配置

   

 

(二)權重,weight。預設為1,權重越高,被分配的客戶端越多,用於後端伺服器效能不均的情況。如:

  

 

 (三)ip_hash。獲取每個訪問的IP,根據hash計算結果分配,每個訪訪客固定訪問一個後端伺服器,可以解決session丟失問題,但也可能導致部分伺服器超負荷。但可以與weight配合使用。如:

  

 

 (四)least_conn,連線數最少的分配。可以與weight配合使用

  

四、其他關鍵字配置

 backup和down。

  backup,標記當前server為預留的備用伺服器,當所有應用伺服器均停止服務時,才會啟用被backup標記的伺服器,適用於熱更新的情況(一般先更新備份伺服器,然後關停部分伺服器,更新關停的部分伺服器,再關閉剩下的伺服器同時啟動更新完的應用伺服器)

  down,標記表示改server當前不參與提供負載均衡服務,比較適用於對伺服器進行維護的情況。

  如:

  

 max_fails和 fail_timeout,預設1次,10秒。一般建議設定為10次,60秒。(簡單的理解:在週期內,連線失敗次數達到最大次數,則判斷為節點不可用,將請求轉交給下個節點處理,等下一個週期再次去請求)

  這個是Nginx在負載均衡功能中,用於判斷後端節點狀態,所用到兩個引數。

  Nginx基於連線探測,如果發現後端異常,在單位週期為fail_timeout設定的時間中達到max_fails次數,這個週期次數內,如果後端同一個節點不可用,那麼接將把節點標記為不可用,並等待下一個週期(同樣時常為fail_timeout)再一次去請求,判斷是否連線是否成功。

  Nginx只有當有訪問時後,才發起對後端節點探測。如果本次請求中,節點正好出現故障,Nginx將把請求轉交給接下來的節點處理。所以不會影響到這次請求的正常進行。