Nginx負載均衡的幾種方式

2021-08-19 07:35:37 字數 1689 閱讀 3723

重點說一下ip_hash 和加權

nginx為後端web伺服器(apache,nginx,tomcat,weblogic)等做反向**

幾台後端web伺服器需要考慮檔案共享,資料庫共享,session共享問題.檔案共享可以使用nfs,共享儲存(fc,ip儲存都行)+redhat gfs集群檔案系

統,rsync+inotify檔案同步等.小規模的集群中使用更多的是nfs.對於內容管理系統,單台進行發布資訊,向多台同步使用rsync+inotify就是個不錯的選擇.

小規模集群,單台高效能資料庫(如志強雙四核,32/64/128g記憶體)即可,大規模集群可能要考慮資料庫集群了,可以使用mysql官方提供的集群軟體,也

可以使用keepalived+lvs讀寫分離做mysql集群.

session共享問題是乙個大問題,如果nginx採用ip_hash的輪詢方法,每個ip在一定時間內會被固定的後端伺服器,這樣我們不用解決session共享問題.反之,

乙個ip的請求被輪詢分發到多台伺服器上,就要解決session共享的問題,可以使用nfs共享session,把session寫入mysql或者memcache等方法,當機器規模比較大

時,一般使用把session寫入memcache裡面.

我們這裡討論nginx的兩種負載均衡方式 輪詢加權(也可以不加權,就是1:1負載)和ip_hash(同一ip會被分配給固定的後端伺服器,解決session問題)

這個配置檔案,我們可以寫到nginx.conf裡面(如果只有乙個web集群),如果有多個web集群,最好寫到vhosts裡面,以虛擬主機的方式,這裡我寫到nginx.conf裡面

第一種配置:加權輪詢,按伺服器的效能給予權重,本例是1:2分配

upstream lb

server

}第二種配置:ip_hash輪詢方法,不可給伺服器加權重

upstream lb

server

}方法二 nginx負載均衡基於ip_hash實現session粘帖

1、輪詢(預設)

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

upstream backserver

2、指定權重

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

upstream backserver

3、ip繫結 ip_hash

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

upstream backserver

4、fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。 

upstream backserver

5、url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。 

upstream backserver

在需要使用負載均衡的server中增加 

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

fail_timeout:max_fails次失敗後,暫停的時間 這個配置在server後面

nginx 實現負載均衡 幾種方式

nginx負載均衡選項upstream用法舉例 1 輪詢 weight 1 預設選項,當weight不指定時,各伺服器weight相同,每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。upstream bakend 2 weight 指定輪詢機率,weight和訪...

Nginx 實現負載均衡的幾種方式

要理解負載均衡,必須先搞清楚正向 和反向 正向 與反向 總結 注 當一台伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰,讓使用者有更好的體驗,我們通過負載均衡的方式來分擔伺服器壓力。我們可以建立很多很多伺服器,組成乙個伺服器集群,當使用...

Nginx 實現負載均衡的幾種方式

要理解負載均衡,必須先搞清楚正向 和反向 正向 與反向 總結 注 當一台伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰,讓使用者有更好的體驗,我們通過負載均衡的方式來分擔伺服器壓力。我們可以建立很多很多伺服器,組成乙個伺服器集群,當使用...