nginx負載均衡

2022-02-10 09:08:22 字數 3953 閱讀 2048

**(

第一部分 web層均衡負載

.net平台下,我目前部署過的均衡負載有兩種方式(iis7和nginx),以下以nginx為例講解web層的均衡負載.

據說nginx能承受3萬併發連線數,這一點沒有測試,總之nginx是以高併發著名的。

nginx 做前端的均衡負載也是相當不錯的選擇,而且和具體的語言無關,下面是nginx 分發到iis的方式

配置非常簡單,方法如下:

確保a伺服器和b伺服器的頁面是完全一樣的,以及web.config需要配置machinekey一致,不然會報異常的。

validationkey="319b474b1d2b7a87c996b280450bb36506a95aedf9b51211"

decryptionkey="280450bb36319b474c996b506a95aedf9b51211b1d2b7a87"

decryption="3des"/>

3. 配置c伺服器(前端負載**伺服器)nginx的配置檔案 nginx.conf

以下標紅的就是需要配置的.其中ip_hash很重要(可以保證每個訪客可以固定乙個後端,保證session不會出問題)

#}5. 配置完成後, 通過命令列進入ngnix目錄,執行ngnix.exe,即啟動ngnix。(請確保沒有其它iis或apache占用80埠)

6.關閉ngnix命令為:ngnix -s stop

第二部分 中間層均衡負載wcf

在第一部分的文章裡,簡單介紹了一下怎麼在web層做均衡負載,主要用到的軟體是nginx.這裡為啥引用中間層的概念呢?

最簡單的部署方式: web層->訪問db, 這裡直聯資料庫的做法,就是二層架構,web層和db可以放在不同乙個伺服器上。在使用者量和併發量大的時候,web層和db壓力都很大,而且還缺乏擴充套件性,所以大型架構都會採用三層的方式

三層架構部署方式:web層->中間層->db層,web層不會直聯資料庫,web層,中間層,db可以放在不同的伺服器上。引用中間層的好處在於減輕了web層和db壓力,中間層專注於處理邏輯相關的業務,而且還提高**的安全性,即使web層的伺服器被攻破,也是沒法獲取到資料庫的帳號和資料。三層架構的職能如下:

web層:只關注介面的展示,通過調中間層的結果獲取資料來展示,不可以直接呼叫資料庫取資料

中間層:只關注業務邏輯和呼叫資料庫的資料

db層:只部署資料庫

在.net平台,中間層可以選擇webservice, wcf等等,考慮到安全性等原因,wcf在目前是非常好的選擇。

wcf:如果不清楚可以網上搜尋一下,使用起來和webservice是比較類似的,開發除錯可能會麻煩點,熟悉了就覺得沒什麼麻煩的。

以下為.net平台下使用wcf作中間層的三層架構圖

用wcf如何做均衡負載?

例如:中間層可以分三大塊業務邏輯,訂單服務(10001),商品服務(10002),使用者服務(10003)。wcf部署成windows服務模式,即占用乙個埠的windows程序

方法一:通過web層的分布式部署,中間層也跟著web層做相應的分布式部署,這個方法最簡單,但不屬於真正的均衡負載。

1.中間層部署

192.168.1.11   10001,10002,10003       這個伺服器部署了三個wcf,埠號分別是10001,10002,10003

192.168.1.12   10001,10002,10003       這個伺服器部署了三個wcf,埠號分別是10001,10002,10003

192.168.1.13 .....

2.web層呼叫

web層伺服器a:配置終結點為192.168.1.11的三個終結點

web層伺服器b:配置終結點為192.168.1.12的三個終結點

web層伺服器c:.....

方法二:web層動態載入終結點,實現均衡負載的呼叫,本人未實踐這種方法,理論上是可行的。

1.中間層部署

192.168.1.11   10001,10002,10003       這個伺服器部署了三個wcf,埠號分別是10001,10002,10003

192.168.1.12   10001,10002,10003       這個伺服器部署了三個wcf,埠號分別是10001,10002,10003

192.168.1.13 .....

2.各個web層讀取同乙份配置檔案,配置的內容為各個服務的介面名和ip和埠,載入後生成陣列

string orderservice;

orderservice[0]="192.168.1.11:10001";

orderservice[1]="192.168.1.12:10001";

orderservice[2]="192.168.1.13:10001";

3.web層呼叫

通過隨機演算法,獲取需要呼叫ip和埠

int index=new radmon().next(0,orderservice.length);

string orderservice=orderservice[index];

//最後呼叫相應ip和埠上的服務

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...