摘要:Microsoft Web Farm Framework簡介
Microsoft Web Farm Framework簡介
[原文發表位置]:Introducing the Microsoft Web Farm Framework
[原文發表時間]:2010/9/8 12:12 AM
上個月我們發佈了Microsoft Web Farm Framework的Beta版。我們發佈的Microsoft Web Farm Framework是一個免費產品,易於你管理和供應一個 Web Server Farm 。它允許你在 Server Farm 裡自動安裝和配置平台元件,也允許你在其間自動同步和部署ASP.NET應用程式。它還支援負載平衡—並且允許你在伺服器間自動升級,這樣不會(因維護)停掉或讓用戶無法訪問網站/程序(它可以自動從負載平衡的伺服器池裡拿出一台升級,然後將其放回)。
Microsoft Web Farm Framework下載只要1 MB,並可以安裝在IIS 7及以上版本。它是免費的,你可以從這裡下載本Beta版的第一個預覽包:x86 / x64.
Microsoft Web Farm Framework的用處
營運一個Web Farm 要求你供應和管理多台伺服器,營運一個Web Farm 需要(還有其它的事情):
1. 在伺服器上安裝IIS, ASP.NET和所有的核心平台元件。
2. 安裝和配置自訂的IIS模組(URL Rewriting, Media Service 等等)。
3. 配置IIS應用程式池 (application pools) 和網站。
4. 為HTTPS之類的端點設定SSL認證。
5. 在多台機器上拷貝和同步相應的網站/應用程式/內容。
6. 為分散式應用使用一個HTTP負載平衡程序來協調多台Web伺服器。
管理一個Web Farm 的管理員和程式設計師通常要做很多手工工作來完成上面的事情(極易犯錯並且很危險),或者是寫很多腳本來自動化這些工作(費時費力)。添加新機器或者變更配置或者改變應用程式是一個費時又痛苦的過程。
現在Microsoft Web Farm Framework簡化了這個過程,並且讓你使用一個完全自動化的方式管理Web Farm 。更了得的地方是,安裝和使用都很簡單。
使用Microsoft Web Farm Framework來提供和延展一個Web Farm
Microsoft Web Farm Framework便於你定義一個可以添加任意多機器的「Web Farm 」。在「Web Farm 」裡的伺服器會自動由Microsoft Web Farm Framework升級,供應和管理。
這意味著你可在一台主伺服器上安裝IIS(包括類似Url覆寫,媒體服務等模組),ASP.NET和自訂的SSL認證一次—然後Microsoft Web Farm Framework會自動在 Farm 裡的其它伺服器上複製這些配置(不需要手工或額外的步驟)。
然後你可以一次性地在主伺服器上建立和配置一個IIS應用程式池和新的網站還有程序—Microsoft Web Farm Framework會自動地在 Farm 的其它Web伺服器上複製這些設定。接著你一次性地在主伺服器上拷貝/部署一個ASP.NET應用程式—Microsoft Web Farm Framework會自動在 Farm 的其它Web伺服器上複製這些變動(不需要手工或額外的步驟)。
Microsoft Web Farm Framework根除了在機群中手工安裝和管理的步驟,它全自動地為你完成供應和部署工作。
整合負載平衡程序
除了讓供應/部署伺服器和程式的工作更簡單,Microsoft Web Farm Framework還包含了負載平衡程式整合功能。具體來說,Microsoft Web Farm Framework可以和一個HTTP負載平衡程式整合,這樣當需要將修改更新到 Farm 裡的Web伺服器上時,它們可以自動地從負載平衡輪作中被拿出來,升級,然後放回去。Microsoft Web Farm Framework也可以一次更新一台伺服器—這樣你總有伺服器來處理很大的負荷。這允許你在升級時,網站還是可用的—不需要你寫什麼手工腳本去控制和管理升級過程。
當前Beta版的Microsoft Web Farm Framework內建了對IIS 應用程式請求路由(ARR)服務(它支援在一個Web Farm 的多台機器上自動做負載平衡)的支援。Microsoft Web Farm Framework便於用ARR整合你的Web Farm 裡的機器來做負載平衡,並支援自動從輪作中抽出一台伺服器升級,然後放回輪作迴圈中。
最終發佈的Microsoft Web Farm Framework將有支援其它負載平衡技術的延展性—而且有同樣的在升級時自動抽取/加入輪作伺服器的功能。
案例演練:建立和供應一個Web Farm
讓我們來演練一個安裝和管理由兩台Web伺服器組成的Web Farm 的簡單場景。我們把兩台伺服器分別稱為「DemoPrimary」和「DemoSecondary」伺服器。我們將用第三台叫做「DemoController」的機器來協調和管理這個Web Farm 。從技術來說,DemoController不需要在單獨的機器上—但是這樣做可以讓演練中的各個角色更加清晰。
安裝Microsoft Web Farm Framework
我們從在「DemoController」機器上用Microsoft Web Platform Installer安裝beta版的Microsoft Web Farm Framework開始,只要機器上裝了IIS 7(或更高)都可以安裝它。
建立和供應一個Web Farm
一旦安裝好Microsoft Web Farm Framework,在「DemoController」的IIS管理工具左邊的樹形控制項裡,你會看到一個新的「Server Farm」節點。如果你右鍵單擊「Server Farm」節點,你會看到「Create Server Farm…」這個選項。
選擇這個選項將會打開「Create Server Farm」對話盒—允許我們配置和安裝要在 Farm 裡管理的機器。
我們將要建立的新伺服器 Farm 命名為「DemoFarm」,並且指明我們要自動供應 Farm 裡的所有伺服器(勾選對話盒裡的「Provision Server Farm」選項)。我們還指明了它可以使用IIS 應用程式請求路由(ARR)來均衡負載:
在精靈頁裡點擊「Next」按鈕會打開一個「Add Servers」對話盒,它用來讓我們指定要添加到Web Farm 裡的機器。在安裝過程中,我們可以添加任意數量的機器。之後我們還可以回到這裡添加更多的機器。後面再添加到 Farm 的機器,Microsoft Web Farm Framework會自動對它們進行供應和更新到最新的配置(這樣便於你隨時擴容)。
本次演練裡我們添加兩台伺服器—「DemoPrimary」和「DemoSecondary」到我們的Web Farm 。我們從添加「DemoPrimary」機器開始。在對話盒裡選中「Primary Server」復選框—指明它將作為在 Farm 其它機器中進行自我複製的主伺服器:
添加好「DemoPrimary」伺服器後我們將在 Farm 裡添加「DemoSecondary」伺服器。
點擊「Finish」按鈕後,Microsoft Web Farm Framework會聯繫添加到 Farm 裡的伺服器,並自動為我們供應相應的管理軟體(不需要我們手動安裝任何東西—Microsoft Web Farm Framework會自動在目標機器上安裝管理服務)。點擊在IIS管理工具的「Server Farm」節點的「Servers」標籤,可以看到 Farm 裡正在進行的供應和部署操作的最新信息(當然你也可以按機器過濾):
目前為止我們已經做完配置我們Web Farm 的所有操作了。我們現在有了一個可用的,自動化的Web Farm 。
我們已經為我們的Web Farm 設定了自動供應、同步和複製方式。如果我們在「DemoPrimary」Web伺服器上建立網站或者應用程式池 (application pool),在上面安裝或升級程式,這些都會被自動複製/同步到「DemoSecondary」伺服器上。對任意一個我們安裝的Web平台元件也是如此。我們不需要在 Farm 的其它機器上手工安裝或配置任何東西。Microsoft Web Farm Framework會自動保持它們與我們的主伺服器同步—允許我們將 Farm 裡的機器當作一個整體看待。
管理一個Web Farm
在IIS管理工具裡點擊「DemoFarm」允許我們管理、追蹤和配置我們的Web Farm :
上圖是Microsoft Web Farm Framework和IIS 應用程式請求路由(它提供了負載平衡和快取管理的支援)的合併視圖。
點擊「DemoFarm」的「Servers」子節點可以看到Web Farm 裡伺服器的狀態,比如它們在做的一些部署/供應的操作,比如有沒有錯誤發生。如果在 Farm 的任何地方發生了供應/部署錯誤,你可以鑽到詳細的跟蹤記錄裡找到它們。
使用Microsoft Web Farm Framework執行平台維護
使用上面的「Platform Provisioning」圖示,Microsoft Web Farm Framework允許你在任意時候方便地在伺服器 Farm 裡的機器上添加平台元件。它整合了我們的Microsoft Web Platform Installer技術,允許你方便地在 Farm 裡的所有機器上安裝平台元件。它還便於你檢查主從伺服器上的平台元件的版本差異。
下面我們可以往伺服器 Farm 設定裡添加「ASP.NET MVC 2」:
請注意「Enable Platform Provisioning」復選框是選中的—確保我們在列表裡添加的產品會自動供應到 Farm 裡的所有機器上。預設情況下,Microsoft Web Farm Framework會在 Farm 裡一台接一台地更新每台伺服器,從負載平衡輪作裡抽出一台更新,完成後自動放回輪作迴圈中(確保你的網站一直可用)。Microsoft Web Farm Framework甚至還知道如何處理伺服器重啟的場景—機器重啟並完成供應後,就會將它放回輪作迴圈裡。
使用Microsoft Web Farm Framework供應程式
Microsoft Web Farm Framework允許你方便地在 Farm 裡部署和複製/同步網站,應用程式,內容和網站設定。它使用Microsoft Web部署技術自動部署程序(對於添加新程序或者程序升級都不需要手工步驟)。
預設情況裡,Microsoft Web Farm Framework將我們在「DemoPrimary」伺服器配置的網站,應用程式,內容和網站設定自動同步到「DemoSecondary」伺服器上(以及後面加進 Farm 的其它Web伺服器)。我們可以使用任何一種應用程式部署機制把程序拷貝和安裝在「DemoPrimary」機器上。這意味著我們可以用FTP/SFTP/或者Microsoft Web部署框架將網站/內容部署到「DemoPrimary」上。也意味著我們可以用自訂的MSI安裝程序或者批處理/Powershell腳本將任意的Web應用程式部署到「DemoPrimary」上。
支援任意部署機制的好處是,你可以復用當前在IIS上使用的應用程式/網站/應用程式池的部署方式來升級主伺服器—然後用Microsoft Web Farm Framework自動將安裝的程序/網站/內容複製到 Farm 的其它機器上。這樣也便於你將Microsoft Web Farm Framework整合進您現有的部署工作流裡。
如果你在IIS管理工具裡點擊「Application Provisioning」圖示,你可以指定Web Farm 裡的伺服器檢查程序/網站/內容更新的同步頻率(預設情況下是每30秒檢查一次)。
你可以選擇指定額外的Microsoft Web部署提供程序在Web Farm 的機群裡拷貝自訂設定。比如說,你想拷貝機碼設定—就可以用它;想拷貝NTFS安全訪問列表—就可以用它;想拷貝/註冊一個COM對像—就可以用它;如果你寫了自己的「FooProvider」做一些自訂的玩藝—還可以用它。
只要你改變或更新了主伺服器上的程序,Microsoft Web Farm Framework會自動將它們同步和拷貝到Web Farm 的其它伺服器上。不需要手工步驟。
運行和管理 Server Farm
Microsoft Web Farm Framework內建了一些管理工具讓你檢查一台伺服器的健康狀況,跟蹤它的狀態。你也可以用類似Microsoft System Center(或其它監控軟體、腳本)之類的產品來監控 Farm 裡伺服器的狀況。如果你在用ARR來平衡負載,它還支援一批監控和負載平衡設定,讓你可以在 Farm 裡根據伺服器的性能和使用率動態地調整負載。
在IIS管理工具裡,Microsoft Web Farm Framework還支援一個「Server Farm Operations」連結,便於你在 Farm 裡執行命令。例如,使用下面的介面,我們可以向Web Farm 裡的所有伺服器發送一個命令,確保「MyCustomWindowsService」啟動並運行著:
你還可以用PowerShell腳本將任務全部自動化。
總結
你可以用Microsoft Web Farm Framework簡化你的Web伺服器架構的供應及部署工作—不僅是伺服器本身,還有運行在它們上面的Web程序和網站。它支援更流暢連貫的部署工作流。增添伺服器無須額外的管理負擔,便於你無縫擴充您的架構。最好的一點是它是免費的,而且在各個版本的Windows Server上都可以運行。
點擊這裡來瞭解更多關於Microsoft Web Farm Framework的知識。你還可以在這裡下載它的Beta版本。
希望這能對您有所幫助。
附:[除了寫部落格以外,我現在也使用推特(Twitter)來及時更新狀態和分享連結,您可以到這個地址「推」我一下:twitter.com/scottgu]