在大型Web應用系統中,由於請求的資料量過大以及併發的因素,導致Web系統會出現當機的現象,解決這一類問題的方法我個人覺得主要在以下幾個方面:
1.IIS 負載均衡。
2.資料庫 負載均衡。
3.系統架構優化,比如報表伺服器和應用伺服器分開等。
本文主要介紹以下IIS負載均衡的實現方法,作者也是慢慢摸索的,如有不當之處還請各位大神指點以下,以求共同進步!!
演示環境介紹:
Server 1: 18.13 (用來分流的IIS伺服器)。
Server 1: 18.49 (用來分流的IIS伺服器)。
Server 1: 50.32 (使用者所訪問的伺服器)。
用來演示的網站:一個名為WebTest的網站,內容就是一張圖片,足以達到演示效果。
安裝Server Farms ,如下圖所示:
整個安裝步驟非常簡單,跟著提示走即可,安裝完成之後在IIS裡面可以看到Server Farms的專案了,如下圖所示:
現在我們通過Server Farms 來建立Server,如下圖所示:
有多少個IIS伺服器就建立多少個,我這裡建立了2個,建立完成之後可以在“執行狀態測試”中進行測試,如下:
Server Farms判斷目標IIS伺服器是否正常,是通過目標伺服器裡面的某一個檔案返回的資料來判斷的,具體配置如下所示,health.txt是用來作為驗證的一個檔案,裡面的內容是OK,那麼如果這個檔案返回的資料是OK,Server Farms則會判斷該伺服器為正常狀態,反之則不正常:
對於如何去平衡伺服器的壓力,Server Farms已經提供了一些演算法,具體如截圖所示,這裡不做詳細的介紹,大家有興趣的話可以逐個測試一下,
兩臺IIS伺服器驗證成功,說明我們的配置是正確的,下一步我們來測試一下:我直接訪問50.32伺服器,這個時候呈現出來的頁面是18.49這個伺服器上面的圖片。
OK,現在我將18.49這臺伺服器的IIS停止掉,如下圖所示:
當18.49這臺伺服器的IIS停止以後,我們再次檢視Server Farms裡面的伺服器狀態,如下圖所示:
當18.49掛了之後,我們再次訪問50.32伺服器,結果出來了:
結論:當配置了多臺IIS伺服器之後,根據我們定義的均衡規則和演算法,它會自動為我們協調和分配當前的請求來達到分流的目的,上面的演示中,當18.49無法訪問的時候,自動貝切換到了18.13伺服器。
PS:雖然是不同的伺服器,呈現出來不同的內容,這裡我是為了便於檢視效果,所以採用的不同的圖片來顯示,不然不容易區分。