您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一、為什么使用Nginx
互聯網飛速發展的今天,大用戶量高并發已經成為互聯網的主體.怎樣能讓一個網站能夠承載幾萬個或幾十萬個用戶的持續訪問呢?這是一些中小網站急需解決的問題。為了解決這個問題引入了負載均衡方法。負載均衡就是一個web服務器解決不了的問題可以通過多個web服務器來平均分擔壓力來解決,并發過來的請求被平均分配到多個后臺web服務器來處理,這樣壓力就被分解開來。
負載均衡服務器分為兩種一種是通過硬件實現的負載均衡服務器,簡稱硬負載例如:f5。另一種是通過軟件來實現的負載均衡,簡稱軟負載:例如apache和nginx。
硬負載和軟負載相比前者作用的網絡層次比較多可以作用到socket接口的數據鏈路層對發出的請求進行分組轉發但是價格成本比較貴,而軟負載作用的層次在http協議層之上可以對http請求進行分組轉發并且因為是開源的所以幾乎是0成本,并且阿里巴巴,京東等電商網站使用的都是Nginx服務器。
ASP.NET使用Nginx搭建IIS分布式集群部署實現負載均衡
Nginx(發音同engine x)
nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;nginx可以作為一個HTTP服務器進行網站的發布處理,另外nginx可以作為反向代理進行負載均衡的實現。
nginx是一個強大的web服務器軟件,用于處理高并發的http請求和作為反向代理服務器做負載均衡。具有高性能、輕量級、內存消耗少,強大的負載均衡能力等優勢。
由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬并發鏈接,并且cpu、內存等資源消耗卻非常低,運行非常穩定。
如果我們寫好的網站只放在一臺服務器上,訪問量一大或者停電了,導致服務器掛了,我們的網站就訪問不了了!像電商網站要是在電商節日掛了,那等著玩火自焚。所以一般是把網站放在多臺服務器上,只要還有一臺服務器沒掛,我們的網站就還能運行和訪問。把網站復制到多臺服務器上,這個時候就需要Nginx來做代理服務器,所有的請求都會經過Nginx代理服務器,由Nginx去轉發請求到空閑的服務器上,且將獲取到服務器的資源轉發給客戶端。
“對客戶端來說,看起來只是發了個請求只到一臺服務器。
實際上后端有多個服務器,客戶端請求的是Nginx代理服務器。
Nginx接收到請求,就會轉發到空閑的后端服務器上,這就是負載均衡了。
nginx負載均衡
Nginx官網提供了三個類型的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以說是開發版
Stable version:最新穩定版,生產環境上建議使用的版本
Legacy versions:遺留的老版本的穩定版
PS:Windows 安裝Nginx并創建為Windows服務,實現只要啟動服務器不需要登錄就可以實現服務自啟動。
虛擬主機,就是將一臺物理服務器虛擬為多個服務器來使用,從而實現在一臺服務器上配置多個站點,即可以在一臺物理主機上配置多個域名。Nginx中,一個server標簽就是一臺虛擬主機,配置多個server標簽就虛擬出了多臺主機。 Nginx虛擬主機的實現方式有兩種:域名虛擬方式與端口虛擬方式。域名虛擬方式是指不同的虛擬機使用不同的域名,通過不同的域名虛擬出不同的主機;端口虛擬方式是指不同的虛擬機使用相同的域名不同的端口號,通過不同的端口號虛擬出不同的主機。基于端口的虛擬方式不常用。
從入門到精通-Nginx,圖文并茂、負載均衡、動靜分離、虛擬主機 附案例源碼 - 陳彥斌 - 博客園 https://www.cnblogs.com/chenyanbin/p/12521296.html
nginx -V查看安裝的模塊
Nginx實現IIS分布式部署和負載均衡實戰演練
1)、Nginx在Windows系統上的性能問題
Nginx服務器知名度很高,高性能,高可擴展,的確是這樣。但并非指你隨便下載一款事先編譯好的,就能滿足你的要求,尤其是Windows版本的。Nginx軟件在linux上跑性能比在windows上跑要好!Nginx在Windows只使用select作為通知方法,所以不要期待它有很高的性能和擴展性。所以只是建議在開發測試上使用,這里阿笨也不能隨便瞎說,大家還是一定要根據自己實際情況去做性能測試然后再去考慮是否將Nginx部署在Windows服務器上。可以通過簡單最粗暴的方案NginxVS IIS對比性能測試。
個人建議:
畢竟nginx我們一般還是用來做反向代理HTTP請求轉發,幾乎不涉及到IO的讀寫操作,其實可以弄一臺低配置的linux系統在上面部署nginx,然后負載均衡我們下游的windows集群服務。如果你對系統要求比較嚴格的話,那只能用微軟給我們推薦的自己家的NLB高可用方案了。IIS 做負載均衡最好是用Windows Server 自帶的組件NLB 。特點:配置繁瑣且麻煩。
2)、多臺機器間session的共享問題
如果站點使用了session,請求平均分配到兩個站點,那么必然存在session共享問題,該如何解決?
配置負載均衡比較簡單,但是最關鍵的一個問題是怎么實現多臺服務器之間session的共享,雖然可以通過nginx的負載均衡算法ip_hash來解決,實際上我們并不推薦這種方式,我們應用采用的是Web應用程序將Session存儲在分布式緩存Redis中。
Nginx對簡單會話保持的支持:ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session 的問題。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
1)、總結
隨著互聯網井噴式發展,單節點服務已經不能滿足并發需求,通常利用nginx反向代理來實現集群部署以此解決并發需求;在現在階段,負載均衡是一個被普遍應用的技術。Nginx作為http的負載均衡服務器,被應用的越來越廣泛。
本課程并不是講解關于nginx方面的知識,而且基于nginx反向代理服務來搭建我們的風不是集群Web應用實現負載均衡的一個基礎課程,課程難免很多關于nginx方面的知識并沒有進行詳細的講解,所以需要大家進一步的去加深和了解Nginx的知識。
如果你所在公司沒有專職的運維人員,而且你的應用程序能接收一定的延遲和宕機風險,但是你又想保證提供服務是高可用的,那么你可以像阿笨這樣基于Nginx搭建一個簡單的IIS分布式集群應用同是實現了WEB負載均衡!
2)、思考
通過Nginx我們實現了一個簡單的負載均衡,實際情況比這復雜很多。比如nginx服務器掛了,那我們的站點就直接掛了,正確的通過keepalived組件來搭建多臺nginx反向代理服務器來提供服務。
Nginx在不同平臺下如何實現高可用(HA)?
Linux平臺:Keepalived+Nginx實現高可用;Windows平臺:HAProxy+Nginx實現高可用。
關于ASP.NET Core中怎么利用Nginx搭建高可用分布式Web集群就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。