IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡
在前兩篇文章中,我們已經講述如何配置與安裝ARR,從本篇文章開始,我們將重點的來講述如何在使用ARR進行負載均衡。
??????? 本篇文章的目的主要是一步步的帶領大家如何配置和使用ARR來進行Http請求的負載均衡,從而實現高可用與高擴展性。同時,本篇文章還會著重的講述ARR是如何監視服務器的健康狀況,同時也會講述如何設置客戶端的親緣性。
??????? 為了演示,我這里做了如下的準備工作:
1.??????配置了三臺服務器(名稱定為A,B,C),并且安裝的是Win Server 2008,IIS與.NET Framework也安裝了。
2.??????在服務器A上面安裝了ARR模塊。服務器A起到一個請求轉發的作用!
3.??????創建了一個Server Farm,并且將服務器B,C加入到了Farm中。
?
另外對于服務器B,我們就部署了一個默認的站點,如下:
? ? ? ? ? ? ? ? ? ? ? ??
可以看出,配置的站點相當的簡單!大家可以自己去配置不同的站點,然后在ARR添加服務器的時候,指向服務器的其他端口!
下面,我們看看,站點中有哪些內容:
??????? 在這里,我簡單的放置了一個網頁Default.html,這個頁面的內容也非常的簡單,其中的205是服務器的編號,這樣寫主要是為了我們后面便于辨別到底是哪一個服務器處理了我們的請求!
??????? 另外需要注意的是,我們在站點中,放置了一個health.txt文件,內容如下:
這個文件主要是給ARR進行健康檢查用的,在后面的配置中,我們就可以看到它的作用了!
服務器C的配置和服務器B類似,只是頁面文件的內容改為了“Response come from 216”。
整個服務器的結構如下:
配置之后的結果如圖所示:
下面開始確認相關的配置信息。
確認Url Rewrite的規則
1.??????啟動IIS
2.??????選擇建立的AppServerFarm
3.??????看到如下的界面:
4.??????雙擊“Routing Rules”圖標,確認“Use URL Rewrite to inspectincoming requests”被選中,如圖:
5.??????啟動瀏覽器,輸入: http://localhost/,得到了如下的頁面結果:
?? 很顯然,ARR的請求轉發起作用了,確認這是205服務器在處理請求!下面,為了確認,我們來查看一下。
請求監控配置
1. 選擇AppServerFarm,然后選中“Monitoring and Management”
2. 雙擊之后,顯示如下:
??????? 發現:果然是205服務器在處理請求!
配置ARR健康檢查機制。
1.??????選擇AppServerFarm,然后選中右邊的“Health Test”圖標。
2.??????雙擊圖標,得到如下界面:
大家還記得我們之前在每個站點放置的health.txt文件嗎,之前說過,這個文件是用來做健康檢查的:ARR定時的去通過GET請求獲取文件的內容,然后和配置中的“Response match”內容進行對比,如果二者一樣,說明Server Farm中的服務器正常。這和我們常常用ping命令測試網絡是否連通一個道理。
??????? 注意:這里在URL中放置的:http://localhost/health.txt。為什么?
我們知道,Farm中服務器很多,這里不可能設置很多的值,例如16.187.153.205/health.txt,16.187.153.216/health.txt。 ARR不允許我們這樣設置。這里之所以讓URL為localhost,ARR在健康檢查的時候,是讓各自的站點各自的去請求自己的health.txt,而每一個站點對于各自的health.txt而言,都是local的。這里的內幕,大家不需要太清楚,只要懂得配置就OK了。
另外,還可以設置健康檢查的周期,和過期的時間!
?
配置客戶端親緣性
選擇AppServerFarm,然后選中右邊的“Server Affnity”圖標。
2.??????雙擊,然后看到如下界面:
客戶端的親緣性是通過cookie來實現的?;镜牧鞒膛c原理是這樣的:
a.??????請求發送給ARR,假如此時ARR請求轉發給服務器B。
b.??????服務器B處理請求,然后將響應發送給ARR所在的服務器。
c.???????此時ARR在響應中加入一個cookie,并且記錄請求處理的服務器為B。
d.??????下一次,ARR檢查發來的請求,如果發現包含了之前設置的cookie,并且檢查cookie里面的服務器信息,然后將請求轉發給對應的服務器。
拒絕新的連接
??????? 在使用ServerFarm的時候,我們可以讓Farm中的一些服務器不在接受新的請求連接,處于一種離線的狀態。從而,使得我們可以之后將這些離線的服務器拿去維護等。
??????? 大家可以這里就有一個疑問了:如果客戶端設置了服務器的親緣性,而這個服務器又離線了,之前建立的session和相關的信息怎么辦?
??????? 其實這里所說的離線,并不是真的離線,斷網!而是說,這些服務器不在接受新的請求,之前已經接受的請求,還是會處理完的!
??????? 操作的步驟如下:
1.??????選中“appServerFarm“
2.??????展開“Servers“節點
3.??????在右邊列出的服務器中,點擊“右鍵“,使其離線,如圖:
??????? 這里給大家留一個小作業:把Farm中的一臺服務器下線,然后發送請求到ARR部署的那個服務器,看看效果!
到這里,大家就可以開始配置和使用ARR進行負載均衡了!
之后的文章,我們講述的深入一些!
相關內容
構建高性能.NET應用之配置高可用IIS服務器-第一篇:IIS必須掌握的知識
構建高性能.NET應用之配置高可用IIS服務器-第二篇 IIS請求處理模型
構建高性能.NET應用之配置高可用IIS服務器-第三篇 IIS中三個核心組件的講解(上)
構建高性能.NET應用之配置高可用IIS服務器-第四篇 IIS常見問題之:工作進程回收機制(上)
構建高性能.NET應用之配高可用IIS服務器-第五篇 IIS常見問題之:工作進程回收機制(中)
IIS負載均衡-Application Request Route詳解第一篇: ARR介紹
IIS負載均衡-Application Request Route詳解第二篇:創建與配置Server Farm
作者介紹:汪洋,哪合伙CEO,曾大漢電子商務有限公司首席技術官,副總裁,負責公司產品、技術、運營,參與商業模式設計。華康移動醫療前CTO,副總裁,首席架構師。微軟MVP
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
贊賞
人贊賞
總結
以上是生活随笔為你收集整理的IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IIS负载均衡-Application
- 下一篇: 理解 .NET Platform Sta