IIS負載均衡-Application Request Route詳解第四篇:使用ARR實作三層部署架構
系列文章連結:
<a href="http://www.agilesharp.com/u/yanyangtian/Blog.aspx/t-199">IIS負載均衡-Application Request Route詳解第二篇:建立與配置Server Farm</a>
<a href="http://www.agilesharp.com/u/yanyangtian/Blog.aspx/t-205%20" target="_blank">IIS負載均衡-Application Request Route詳解第三篇:使用ARR進行Http請求的負載均衡(下)</a>
<a href="http://www.agilesharp.com/u/yanyangtian/Blog.aspx/t-206" target="_blank">IIS負載均衡-Application Request Route詳解第四篇:使用ARR實作三層部署架構</a>
本篇的主要目的是帶領大家一起來使用ARR來實作一個三層部署架構。這裡的三層部署架構主要是由:服務層,應用程式伺服器層已經資料層實作。如下圖所示:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=167" target="_blank"></a>
每次一提到“層”這個字的時候,似乎感覺這個字特别的惹火。很多朋友開始讨論起來,于是很多的見解和了解就出來了:有人說:架構就是分層;三層就是指:顯示層,業務層,資料通路層…
不管上述的了解和争論對錯與否,這裡不會對這些理論和概念進行過多的闡釋,這裡有一點提到的就是:不要将實體層Tier和邏輯層Layer混在一起講,或者說,不要将應用程式的邏輯層與實體的部署層混為一談!
注:在自己的學習和工作的經曆中有這樣的感覺:很多時候,所學的東西會攪在一起,并且甚至感覺他們互相沖突,還會颠覆自己之前很多的了解和看法,有時候确實感覺非常痛苦,但是也是像是鳳凰的重生。其實這不是什麼壞事,知識和經驗就是在這過程中,不斷的思考,總結,提煉出來的!其實到後來大家就可以發現:我們沒有必要死扣一些概念,什麼層啊,模式,都不是關鍵,鍛煉出一種思維才是最有價值的。
我們這裡講的是實體層的部署。
正如之前一樣,我們來做一些準備工作:
準備三台伺服器(可以用虛拟機),其中一台用來處理對靜态内容的請求,例如圖檔,腳本,html頁面等,我們把這一台伺服器放在第一層。
再用一台伺服器放在第二層,作用應用程式伺服器,用來處理動态内容的請求。
另外一台伺服器用來部署資料庫。
另外,我也把三台伺服器的相關配置說明一下:
三台伺服器安裝了Win Server 2008和IIS
在那台處理靜态檔案的伺服器上,我們安裝ARR,也就說,此時這一台伺服器做兩件事情:負責轉發請求;處理對靜态檔案的請求。
第一步:準備工作
很多時候,我們在靜态檔案放在站點的檔案夾中,例如/images/,/css/,/js/等。下面,我們開始示範,我們為了确認對靜态檔案的請求是由安裝了ARR所在的伺服器處理的,我們分别在三伺服器的站點中放置三張名字一樣但是内容不同的圖檔,如下:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=168" target="_blank"></a>
其他伺服器上面的站點結果和這個類似,隻是把圖檔的内容改為了“安捷雨希“而已。
第二步:在ARR中配置對靜态檔案的請求
我們進行這一步操作的主要目的就是:使得ARR所在的伺服器來處理所有對站點靜态檔案的請求(為了起到示範作用,這裡對靜态檔案的請求,我們不會包括html的檔案)。
下面,我們就開始操作:
啟動IIS
建立一個Server Farm,并且添加兩台伺服器,如圖所示:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=169" target="_blank"></a>
這個205伺服器就是我們安裝了ARR的伺服器,因為此時我的demo站點部署在8080端口,是以這裡要開啟“Advance setting“。
再添加第二台伺服器,其上的站點是部署在80端口。
添加的結果就如下:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=170" target="_blank"></a>
大家到這裡就可能有點納悶了:怎麼隻是添加了兩台伺服器呢,不是準備了三台伺服器嗎?
理由很簡單,有一台伺服器是作為資料庫伺服器,而不是作為http請求處理的伺服器(換句話說,http請求不會發送到資料庫伺服器上去),并且資料庫伺服器是我們在應用程式中通過連接配接字元串來連接配接的。
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=171" target="_blank"></a>
從圖中可以看到,我請求logo.png的時候,是應用程式的伺服器(沒有安裝ARR的那個伺服器)處理了這個請求。
下面我們開始配置。
1. 選中建立的Server Farm
2. 選中“Routing Rules“,如下:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=172" target="_blank"></a>
3. 輕按兩下“Routing Rules“,如下:
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=173" target="_blank"></a>
主要注意圖中标紅的兩個地方:第一個是配置哪些擴充名的檔案不轉發請求。在圖中,我們配置了*.png,就說明,如果ARR用戶端要請求.png檔案,那麼ARR就不将這個請求轉發給Server Farm中的其他伺服器,而是有本機直接處理。
配置好了之後,我們就點選“Apply“,然後再次運作浏覽器,來看效果。
<a href="http://www.agilesharp.com/Services/BlogAttachment.ashx?AttachmentID=174" target="_blank"></a>
大家看到上面的圖,右邊圖是我在ARR所在的伺服器發送請求得到的結果,而左邊是我直接在應用程式伺服器上面檢視圖檔。
還記得在之前沒有配置的時候,我在ARR伺服器上面發送請求的時候,看到的是“安捷雨希“,說明ARR轉發了對png檔案的請求;而當我們配置之後,此時ARR就不在轉發這個請求,而是自己處理,是以我們看到了”agilesharp“的圖檔。
這裡,依然給大家留一個作業:大家可以把對html檔案的請求也不轉發,看看效果!
本文轉自yanyangtian51CTO部落格,原文連結:http://blog.51cto.com/yanyangtian/822057 ,如需轉載請自行聯系原作者