負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。
負載均衡(load balance)其意思就是分攤到多個操作單元上進行執行,例如web伺服器、ftp伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。
(負載均衡/932451?fr=aladdin)
一、nginx作為負載均衡的優點
1工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對網域名稱、目錄結構,它的正則規則比haproxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,nginx單憑這點可利用的場合就遠多於lvs了。
2、nginx對網路穩定性的依賴非常小,理論上能ping通就能進行負載功能,這個也是它的優勢之一;相反lvs對網路穩定性依賴比較大。
3、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的併發量,負載度比lvs相對小些。
4、nginx可以通過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另乙個節點,不過其中缺點就是不支援url來檢測。比如使用者正在上傳乙個檔案,而處理該上傳的節點剛好在上傳過程中出現故障,nginx會把上傳切到另一台伺服器重新處理,而lvs就直接斷掉了,如果是上傳乙個很大的檔案或者很重要的檔案的話,使用者可能會因此而不滿。
二、nginx的缺點
1、nginx僅能支援http、https和email協議,這樣就在適用範圍上面小些,這個是它的缺點。
2、對後端伺服器的健康檢查,只支援通過埠來檢測,不支援通過url來檢測。不支援session的直接保持,但能通過ip_hash來解決。
三、nginx負載均衡原理
nginx是以反向**的方式進行負載均衡的,其實現的分配策略被編進nginx核心的有輪詢、ip_hash、第三方的有fair、url_hash等。
nginx簡單負載均衡原理圖如下
四、簡單部署及配置
實驗部署配置如下:
nginx負載均衡伺服器 192.168.1.131
後端伺服器web-01 192.168.1.133
後端伺服器web-02 192.168.1.134
1、負載均衡伺服器安裝nginx
安裝nginx所需環境,確保系統安裝了g++、gcc、openssl、openssl-devel、pcre、pcre-devel和zlib-devel。
yum install g++ gcc openssl openssl-devel pcre pcre-devel zlib-devel -y
解壓安裝nginx即可:
tar zxvf nginx-1.12.0.tar
cd ngxinx-1.12.0
./configure (具體可以自己定義)
make
make install
2、負載均衡配置(輪詢)
1、負載均衡伺服器安裝nginx後,配置nginx.conf(如圖所示)
a、使用upstream定義web伺服器池,包含web1、web2節點。
b、proxy_pass把訪問請求**給之前定義的web伺服器池。
2、測試訪問,nginx把每個請求按順序逐一分配到不同的後端伺服器上。如果後端伺服器down掉,能自動剔除。
關閉web-01,模擬伺服器down掉,請求全部轉到web-02上。
3、負載均衡策略
1、ip繫結ip_hash,每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。 當使用該策略時,不使用weight,backup。
upstream backserver
nginx 負載均衡 Nginx負載均衡策略
nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...
nginx負載均衡
nginx 的 upstream目前支援 4 種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。3 ip hash 每個請求按訪問ip的hash...
nginx負載均衡
nginx s stop quick exit nginx s quit graceful quit nginx s reload changing configuration,starting a new worker,quitting an old worker gracefully nginx...