溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群

發(fā)布時(shí)間:2021-06-22 16:14:00 來(lái)源:億速云 閱讀:158 作者:Leah 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

一、為什么使用Nginx

互聯(lián)網(wǎng)飛速發(fā)展的今天,大用戶(hù)量高并發(fā)已經(jīng)成為互聯(lián)網(wǎng)的主體.怎樣能讓一個(gè)網(wǎng)站能夠承載幾萬(wàn)個(gè)或幾十萬(wàn)個(gè)用戶(hù)的持續(xù)訪問(wèn)呢?這是一些中小網(wǎng)站急需解決的問(wèn)題。為了解決這個(gè)問(wèn)題引入了負(fù)載均衡方法。負(fù)載均衡就是一個(gè)web服務(wù)器解決不了的問(wèn)題可以通過(guò)多個(gè)web服務(wù)器來(lái)平均分擔(dān)壓力來(lái)解決,并發(fā)過(guò)來(lái)的請(qǐng)求被平均分配到多個(gè)后臺(tái)web服務(wù)器來(lái)處理,這樣壓力就被分解開(kāi)來(lái)。

負(fù)載均衡服務(wù)器分為兩種一種是通過(guò)硬件實(shí)現(xiàn)的負(fù)載均衡服務(wù)器,簡(jiǎn)稱(chēng)硬負(fù)載例如:f5。另一種是通過(guò)軟件來(lái)實(shí)現(xiàn)的負(fù)載均衡,簡(jiǎn)稱(chēng)軟負(fù)載:例如apache和nginx。

硬負(fù)載和軟負(fù)載相比前者作用的網(wǎng)絡(luò)層次比較多可以作用到socket接口的數(shù)據(jù)鏈路層對(duì)發(fā)出的請(qǐng)求進(jìn)行分組轉(zhuǎn)發(fā)但是價(jià)格成本比較貴,而軟負(fù)載作用的層次在http協(xié)議層之上可以對(duì)http請(qǐng)求進(jìn)行分組轉(zhuǎn)發(fā)并且因?yàn)槭情_(kāi)源的所以幾乎是0成本,并且阿里巴巴,京東等電商網(wǎng)站使用的都是Nginx服務(wù)器。

ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群

ASP.NET使用Nginx搭建IIS分布式集群部署實(shí)現(xiàn)負(fù)載均衡

二、什么是Nginx

Nginx(發(fā)音同engine x)

nginx是一款自由的、開(kāi)源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、POP3、SMTP代理服務(wù)器;nginx可以作為一個(gè)HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外nginx可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn)。

nginx是一個(gè)強(qiáng)大的web服務(wù)器軟件,用于處理高并發(fā)的http請(qǐng)求和作為反向代理服務(wù)器做負(fù)載均衡。具有高性能、輕量級(jí)、內(nèi)存消耗少,強(qiáng)大的負(fù)載均衡能力等優(yōu)勢(shì)。

由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā),官方測(cè)試nginx能夠支支撐5萬(wàn)并發(fā)鏈接,并且cpu、內(nèi)存等資源消耗卻非常低,運(yùn)行非常穩(wěn)定。

三、什么是負(fù)載均衡

如果我們寫(xiě)好的網(wǎng)站只放在一臺(tái)服務(wù)器上,訪問(wèn)量一大或者停電了,導(dǎo)致服務(wù)器掛了,我們的網(wǎng)站就訪問(wèn)不了了!像電商網(wǎng)站要是在電商節(jié)日掛了,那等著玩火自焚。所以一般是把網(wǎng)站放在多臺(tái)服務(wù)器上,只要還有一臺(tái)服務(wù)器沒(méi)掛,我們的網(wǎng)站就還能運(yùn)行和訪問(wèn)。把網(wǎng)站復(fù)制到多臺(tái)服務(wù)器上,這個(gè)時(shí)候就需要Nginx來(lái)做代理服務(wù)器,所有的請(qǐng)求都會(huì)經(jīng)過(guò)Nginx代理服務(wù)器,由Nginx去轉(zhuǎn)發(fā)請(qǐng)求到空閑的服務(wù)器上,且將獲取到服務(wù)器的資源轉(zhuǎn)發(fā)給客戶(hù)端。

“對(duì)客戶(hù)端來(lái)說(shuō),看起來(lái)只是發(fā)了個(gè)請(qǐng)求只到一臺(tái)服務(wù)器。

實(shí)際上后端有多個(gè)服務(wù)器,客戶(hù)端請(qǐng)求的是Nginx代理服務(wù)器。

Nginx接收到請(qǐng)求,就會(huì)轉(zhuǎn)發(fā)到空閑的后端服務(wù)器上,這就是負(fù)載均衡了。

ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群

nginx負(fù)載均衡

四、Nginx在Linux系統(tǒng)安裝方法

Nginx官網(wǎng)提供了三個(gè)類(lèi)型的版本

Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以說(shuō)是開(kāi)發(fā)版

Stable version:最新穩(wěn)定版,生產(chǎn)環(huán)境上建議使用的版本

Legacy versions:遺留的老版本的穩(wěn)定版

PS:Windows 安裝Nginx并創(chuàng)建為Windows服務(wù),實(shí)現(xiàn)只要啟動(dòng)服務(wù)器不需要登錄就可以實(shí)現(xiàn)服務(wù)自啟動(dòng)。

五、Nginx實(shí)現(xiàn)Web分布式部署和負(fù)載均衡實(shí)戰(zhàn)演練

虛擬主機(jī),就是將一臺(tái)物理服務(wù)器虛擬為多個(gè)服務(wù)器來(lái)使用,從而實(shí)現(xiàn)在一臺(tái)服務(wù)器上配置多個(gè)站點(diǎn),即可以在一臺(tái)物理主機(jī)上配置多個(gè)域名。Nginx中,一個(gè)server標(biāo)簽就是一臺(tái)虛擬主機(jī),配置多個(gè)server標(biāo)簽就虛擬出了多臺(tái)主機(jī)?! ginx虛擬主機(jī)的實(shí)現(xiàn)方式有兩種:域名虛擬方式與端口虛擬方式。域名虛擬方式是指不同的虛擬機(jī)使用不同的域名,通過(guò)不同的域名虛擬出不同的主機(jī);端口虛擬方式是指不同的虛擬機(jī)使用相同的域名不同的端口號(hào),通過(guò)不同的端口號(hào)虛擬出不同的主機(jī)?;诙丝诘奶摂M方式不常用。

從入門(mén)到精通-Nginx,圖文并茂、負(fù)載均衡、動(dòng)靜分離、虛擬主機(jī) 附案例源碼 - 陳彥斌 - 博客園 https://www.cnblogs.com/chenyanbin/p/12521296.html

nginx -V查看安裝的模塊

ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群

Nginx實(shí)現(xiàn)IIS分布式部署和負(fù)載均衡實(shí)戰(zhàn)演練

六、Nginx反向代理需要注意的幾個(gè)問(wèn)題

1)、Nginx在Windows系統(tǒng)上的性能問(wèn)題

Nginx服務(wù)器知名度很高,高性能,高可擴(kuò)展,的確是這樣。但并非指你隨便下載一款事先編譯好的,就能滿(mǎn)足你的要求,尤其是Windows版本的。Nginx軟件在linux上跑性能比在windows上跑要好!Nginx在Windows只使用select作為通知方法,所以不要期待它有很高的性能和擴(kuò)展性。所以只是建議在開(kāi)發(fā)測(cè)試上使用,這里阿笨也不能隨便瞎說(shuō),大家還是一定要根據(jù)自己實(shí)際情況去做性能測(cè)試然后再去考慮是否將Nginx部署在Windows服務(wù)器上。可以通過(guò)簡(jiǎn)單最粗暴的方案NginxVS IIS對(duì)比性能測(cè)試。

個(gè)人建議:
畢竟nginx我們一般還是用來(lái)做反向代理HTTP請(qǐng)求轉(zhuǎn)發(fā),幾乎不涉及到IO的讀寫(xiě)操作,其實(shí)可以弄一臺(tái)低配置的linux系統(tǒng)在上面部署nginx,然后負(fù)載均衡我們下游的windows集群服務(wù)。

如果你對(duì)系統(tǒng)要求比較嚴(yán)格的話(huà),那只能用微軟給我們推薦的自己家的NLB高可用方案了。IIS 做負(fù)載均衡最好是用Windows Server 自帶的組件NLB 。特點(diǎn):配置繁瑣且麻煩。

2)、多臺(tái)機(jī)器間session的共享問(wèn)題

如果站點(diǎn)使用了session,請(qǐng)求平均分配到兩個(gè)站點(diǎn),那么必然存在session共享問(wèn)題,該如何解決?

配置負(fù)載均衡比較簡(jiǎn)單,但是最關(guān)鍵的一個(gè)問(wèn)題是怎么實(shí)現(xiàn)多臺(tái)服務(wù)器之間session的共享,雖然可以通過(guò)nginx的負(fù)載均衡算法ip_hash來(lái)解決,實(shí)際上我們并不推薦這種方式,我們應(yīng)用采用的是Web應(yīng)用程序?qū)ession存儲(chǔ)在分布式緩存Redis中。

Nginx對(duì)簡(jiǎn)單會(huì)話(huà)保持的支持:ip_hash

每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session 的問(wèn)題。

例如:

upstream bakend {

ip_hash;

server 192.168.0.14:88;

server 192.168.0.15:80;

}

七、思考與總結(jié)

1)、總結(jié)

隨著互聯(lián)網(wǎng)井噴式發(fā)展,單節(jié)點(diǎn)服務(wù)已經(jīng)不能滿(mǎn)足并發(fā)需求,通常利用nginx反向代理來(lái)實(shí)現(xiàn)集群部署以此解決并發(fā)需求;在現(xiàn)在階段,負(fù)載均衡是一個(gè)被普遍應(yīng)用的技術(shù)。Nginx作為http的負(fù)載均衡服務(wù)器,被應(yīng)用的越來(lái)越廣泛。

本課程并不是講解關(guān)于nginx方面的知識(shí),而且基于nginx反向代理服務(wù)來(lái)搭建我們的風(fēng)不是集群Web應(yīng)用實(shí)現(xiàn)負(fù)載均衡的一個(gè)基礎(chǔ)課程,課程難免很多關(guān)于nginx方面的知識(shí)并沒(méi)有進(jìn)行詳細(xì)的講解,所以需要大家進(jìn)一步的去加深和了解Nginx的知識(shí)。

如果你所在公司沒(méi)有專(zhuān)職的運(yùn)維人員,而且你的應(yīng)用程序能接收一定的延遲和宕機(jī)風(fēng)險(xiǎn),但是你又想保證提供服務(wù)是高可用的,那么你可以像阿笨這樣基于Nginx搭建一個(gè)簡(jiǎn)單的IIS分布式集群應(yīng)用同是實(shí)現(xiàn)了WEB負(fù)載均衡!

2)、思考

通過(guò)Nginx我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的負(fù)載均衡,實(shí)際情況比這復(fù)雜很多。比如nginx服務(wù)器掛了,那我們的站點(diǎn)就直接掛了,正確的通過(guò)keepalived組件來(lái)搭建多臺(tái)nginx反向代理服務(wù)器來(lái)提供服務(wù)。

Nginx在不同平臺(tái)下如何實(shí)現(xiàn)高可用(HA)?
Linux平臺(tái):Keepalived+Nginx實(shí)現(xiàn)高可用;Windows平臺(tái):HAProxy+Nginx實(shí)現(xiàn)高可用。

關(guān)于ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI