nginx負載均衡的幾種模式(4)

2022-06-22 03:42:13 字數 2056 閱讀 4876

nginx 的 upstream目前支援 4 種方式的分配 

1)、輪詢(預設) 

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2)、weight

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

upstream bakend

2)、ip_hash

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。

upstream bakend

3)、fair(第三方) 按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

4)、url_hash(第三方)

配置

在http節點裡新增:

#定義負載均衡裝置的 ip及裝置狀態

upstream myserver

在需要使用負載的server節點下新增

upstream 每個裝置的狀態:

down 表示單前的server暫時不參與負載

weight 預設為1.weight越大,負載的權重就越大。

max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤

fail_timeout:max_fails 次失敗後,暫停的時間。

backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。

配置負載均衡比較簡單,但是最關鍵的乙個問題是怎麼實現多台伺服器之間session的共享:

下面有幾種方法(以下內容**於網路,第四種方法沒有實踐.)

1) 不使用session,換作cookie

2) 應用伺服器自行實現共享:

session存在memcache或者redis中,以這種方式來同步session,把session抽取出來,放到記憶體級資料庫裡面,解決了session共享問題,同時讀取速度也是非常之快。

參照:

3) ip_hash

nginx中的ip_hash技術能夠將某個ip的請求定向到同一台後端,這樣一來這個ip下的某個客戶端和某個後端就能建立起穩固的session,ip_hash是在upstream配置中定義的:

upstream backend

ip_hash是容易理解的,但是因為僅僅能用ip這個因子來分配後端,因此ip_hash是有缺陷的,不能在一些情況下使用:

1/ nginx不是最前端的伺服器。ip_hash要求nginx一定是最前端的伺服器,否則nginx得不到正確ip,就不能根據ip作hash。譬如使用的是squid為最前端,那麼nginx取ip時只能得到squid的伺服器ip位址,用這個位址來作分流是肯定錯亂的。

2/ nginx的後端還有其它方式的負載均衡。假如nginx後端又有其它負載均衡,將請求又通過另外的方式分流了,那麼某個客戶端的請求肯定不能定位到同一臺session應用伺服器上。這麼算起來,nginx後端只能直接指向應用伺服器,或者再搭乙個squid,然後指向應用伺服器。最好的辦法是用location作一次分流,將需要session的部分請求通過ip_hash分流,剩下的走其它後端去。

4) upstream_hash

為了解決ip_hash的一些問題,可以使用upstream_hash這個第三方模組,這個模組多數情況下是用作url_hash的,但是並不妨礙將它用來做session共享:

假如前端是squid,他會將ip加入x_forwarded_for這個http_header裡,用upstream_hash可以用這個頭做因子,將請求定向到指定的後端:

可見這篇文件:

在文件中是使用$request_uri做因子,稍微改一下:

這樣就改成了利用x_forwarded_for這個頭作因子,在nginx新版本中可支援讀取cookie值,所以也可以改成:

hash $cookie_jsessionid;

Nginx幾種負載均衡演算法

眾所周知 nginx可以其中乙個最重要的功能就是負載均衡 其中負載均衡主要又有五個演算法 內建的有 輪詢 預設 輪詢權值 weight ip hash fair url hash 其中前三個為nginx內建演算法 後兩個為第三方 需要引用一些模組。輪詢為預設的負載均衡的方式 即依次將請求分配給不同的...

Nginx負載均衡的幾種演算法

nginx支援的幾種演算法分析 1 輪詢每個請求按時間順序分配到不同的後端伺服器了,後端伺服器down掉,自動切除 2 weight 設定伺服器權值 如weight 2 伺服器效能不均時候使用。weight 預設為1,weight越大,負載的權重越大 3 ip hash 每個請求按訪問ip的hash...

Nginx負載均衡的幾種方式

重點說一下ip hash 和加權 nginx為後端web伺服器 apache,nginx,tomcat,weblogic 等做反向 幾台後端web伺服器需要考慮檔案共享,資料庫共享,session共享問題.檔案共享可以使用nfs,共享儲存 fc,ip儲存都行 redhat gfs集群檔案系 統,rs...