邏輯數據中心設計器簡介 — 第二部分
Mickey Williams
Neudesic LLC
摘要:通過創建一個簡單的數據中心模型來了解實際操作中的邏輯數據中心設計器。
本頁內容
簡介 | |
創建初始模型 | |
小結 |
簡介
邏輯數據中心設計器 (Logical Datacenter Designer) 用於創建描述數據中心的策略和邏輯結構(包括,影響應用程序系統部署到數據中心的服務器、防火牆、通信路徑、安全約束和其他配置要求)的模型。這裏,我們將說明如何使用該設計器來構建一個簡單的模型。
創建初始模型
我們將創建的第一個模型是一個簡單的數據中心,具有以下配置:
• |
一個宿主表示層應用程序的 IIS Web 服務器。 |
• |
一個宿主由表示層使用的服務層 Web 服務的 IIS Web 服務器。 |
• |
一個宿主由數據中心內的應用程序使用的數據庫的數據庫服務器。 |
雖然數據中心的物理配置可能在表示層和服務層包含多臺計算機,但我們只建模一個邏輯服務器來表示這些計算機。邏輯模型是物理數據中心的等比例視圖。它不會嘗試對數據中心內的每臺服務器進行建模。相反,它會對每種類型的邏輯服務器進行建模,以便數據中心策略可供開發在數據中心內運行的軟件的小組成員共享。邏輯服務器和物理計算機之間沒有直接的映射關係。一臺邏輯服務器可能由多個物理計算機表示,而多個邏輯服務器可用於表示一臺物理服務器。
將元素添加到模型
使用前面所述的步驟創建一個空白的邏輯數據中心關係圖,在必要時擴展工具箱,然後將以下三個元素拖到設計畫布上:
• |
兩臺 IISWebServer 邏輯服務器 |
• |
一臺 DatabaseServer 邏輯服務器 |
您的設計畫布應如圖 1 所示。
圖 1. 設計畫布
與其他 Visual Studio 設計器一樣,元素的名稱在“Properties”窗口中定義。要更方便地使用該模型,請更改服務器的名稱和屬性,如以下列表所示。
服務器類型 | 名稱 |
IISWebServer,表示層 |
PresentationTier |
IISWebServer,服務層 |
ServiceTier |
DatabaseServer |
SqlServer |
連接服務器
邏輯數據中心關係圖中的服務器和類似元素具有的通信端點,代表數據中心內通信路徑的連接點。通信只能在連接的端點之間進行;在使用邏輯數據中心模型進行部署評估期間,應用程序將被限制到模型中的通信路徑。要求其他通信路徑的任何應用程序將在部署評估期間失敗。
如前所述,工具箱中有六個標準端點,它們可以分爲兩類:服務器端端點和客戶端端點。默認情況下,拖放到設計畫布上的元素將公開零個、一個或多個端點。例如,DatabaseServer 元素將公開一個 DatabaseServerEndpoint,而 IISWebServer 元素則自動公開以下兩個端點:
• |
WebSiteEndpoint 定義要與 Web 服務器進行通信的傳入服務器端。 |
• |
HTTPClientEndpoint 代表從 Web 服務器傳出的連接。 |
要定義兩個端點之間的通信路徑,請按住 ALT 鍵,同時將一個端點拖到另一個兼容的端點。在 PresentationTier 上的 HTTPClientEndpoint 與 ServiceTier 元素上的 WebSiteEndpoint 之間建立一個連接。設計器自動創建一個通信路徑,表示爲端點之間的一條線。
通信端點是強類型的,連接路徑必須建立在兼容的端點之間。例如,HTTPClientEndpoint 不能直接連接到 DatabaseServerEndpoint — 客戶端端點必須始終與其相應的服務器端點相匹配。例如,如果您嘗試將 ServiceTier Web 服務器連接到 SQLServer 元素,您將發現無法放落鼠標光標並且無法連接兩個元素。
要連接 ServiceTier 和 SqlServer 元素,您必須首先在 PresentationTier 元素上創建一個兼容的客戶端端點。將 DatabaseClientEndpoint 從工具箱拖放到 PresentationTier Web服務器。然後,拖動一個從新的 DatabaseClientEndpoint 到 SqlServer 數據庫服務器上的端點的連接。
模型的當前狀態如圖 2 所示。
圖 2. 模型的當前狀態
設計器根據端點的類型自動爲其命名。要提供一個更具描述性的名稱,請選擇設計表面上的標籤,並在 Properties 窗口中更改 Text 屬性。
用約束建模策略
可以使用簡單模型(如前面部分中構建的那個)來試驗基本的設計構想。使用部署設計器,您可以評估模型的部署,並驗證針對適當服務器的系統組件以及通信規則的實施。例如,您將無法成功地部署需要 PresentationTier 邏輯服務器直接與數據庫進行通信的應用程序。
使用“設置和約束編輯器”,可以實施一組更細粒度的策略。模型中的單個元素可以帶有約束,以進一步限制部署到數據中心的應用程序的行爲和功能。
施加在邏輯服務器上的約束會影響寄宿在該服務器上的應用程序以及它們的行爲。可以對服務器進行約束,以便絕不會部署某些類型的應用程序,或者,約束可能指定要求應用程序的特定方面,例如指定僅將 AspNetSqlProvider 用於 ASP.NET 應用程序中的角色和成員關係。
施加在邏輯服務器上的約束還可以公佈服務器的功能。預先定義的約束可用於指定服務器可用的操作系統和 .NET Framework 版本。在部署驗證期間,這些約束將與相應的應用程序約束一起進行評估。
施加在端點上的約束會限制可以通過該端點執行的通信模式。例如,可以將 HTTPClientEndpoint 約束爲只允許 Web 服務的 HTTP 通信。建立這樣的約束會立即以下列兩種方式更改分佈式系統設計器的行爲:
1. |
邏輯數據中心設計器將不允許違反策略的連接。約束爲只允許 Web 服務通信的 HTTP 客戶端端點無法綁定到約束爲只宿主 Web 內容通信的 Web 服務器端點。 |
2. |
部署設計器將在部署評估期間實施約束。如果兩個服務器之間的唯一通信路徑通過阻止 Web 服務通信的端點,那麼在部署驗證期間,嘗試通過這些端點傳遞 Web 服務通信的任何已部署系統都將失敗。 |
爲模型定義約束和設置
我們將使用“設置和約束編輯器”來爲我們在前面部分中創建的模型實施策略。首先,我們需要爲部署到數據中心的系統建立一些基本的策略要求。下面是一些常見策略約束的列表:
• |
PresentationTier 和 ServiceTier 邏輯服務器應該只支持 ASP.NET 應用程序,並且不應該宿主外部的 Web 服務、BizTalk Web 服務或通用應用程序。 |
• |
作爲一個通用策略,所有的 Web 應用程序都必須使用外部會話狀態(StateServer 或 SqlServer)。 |
要爲 PresentationTier 邏輯服務器配置約束,應該首先在邏輯數據中心關係圖上選擇邏輯服務器元素。“設置和約束編輯器”通常出現在緊靠設計器畫布下方的區域,如果它沒有出現,右鍵單擊服務器並從上下文菜單中選擇 Settings and Constraints。“設置和約束編輯器”如圖 3 所示。
圖 3.“設置和約束編輯器”
該編輯器顯示了一個帶有以下兩個頂層節點的樹控件:Constraints 和 Settings。Constraints 節點用於在選定的模型元素上應用預先定義或用戶定義的約束。選擇預先定義的約束會顯示組成約束的設置。未啓用的約束會將它們的設置顯示爲只讀。當通過勾選關聯的複選框啓用某個選定約束後,就可以編輯影響組成設置的控件。圖 4 顯示用於編輯預先定義的 ASP.NET Security 約束的“設置和約束編輯器”。
圖 4. 用於編輯預先定義的 ASP.NET Security 約束的“設置和約束編輯器”
Settings 節點用於配置邏輯服務器設置。雖然“設置和約束編輯器”可讓您更精確地控制特定設置,但它很難正確管理您所使用的大量設置。圖 5 顯示在邏輯服務器上編輯 DomainController 設置的 SCE。此外,您可以使用 Import IISSettings Wizard 直接從數據中心內的計算機提取您的當前設置。右鍵單擊 settings 下的任何節點並選擇 Import Settings,可以啓動該向導。
圖 5. 用於輸入 DomainController settings 的“設置和約束編輯器”
要實施上述討論的策略,選擇 PresentationTier 邏輯服務器,然後使用“設置和約束編輯器”按照以下步驟操作:
• |
展開 Constraints 節點,並清除 ExternalBizTalkWebService 和 ExternalWebService 複選框。這將限制邏輯服務器只支持 ASP.NET 和靜態 HTTP 內容。 |
• |
在 Constraints 下,展開 ASP.NETWebApplication 節點,並選擇 ASP.NET Session State 複選框。在右窗格中,勾選 Session State Mode 的 StateServer 和 SqlServer 選項,如圖 6 所示。 圖 6. Session State Mode 選項 |
對 ServiceTier 邏輯服務器重複上述步驟。
區域
在實際的數據中心或通用網絡中(與 MSDN 文章相對),會使用更多的方法,而不僅僅是服務器之間的簡單連接。防火牆、路由器、交換機和其他網絡元素實施安全和通信策略,以提供對網絡中通信的限制。在某種程度上,這種行爲可以通過將約束應用於通信端點來建模,但是這種方法很乏味並且容易出錯。更好的選擇是使用區域。區域充當邏輯服務器和其他網絡元素容器的角色,並限制它們的行爲和通信設置。
通常會向區域添加約束,以限制它可以包含的元素。例如,可以創建一個只允許 Web 內容應用程序的區域。區域內部的元素與外部元素之間的任何通信都必須通過區域邊界的端點完成,這通常約束爲只允許通信選項的受限子集。
要將區域添加到邏輯數據中心關係圖,將區域工具箱元素拖放到設計器上。然後,可以通過拖放將邏輯服務器和其他元素添加到區域(充當它們的容器)中。雖然可以在區域中可輕鬆建立通信路徑,但是無法實現與區域外部元素的直接通信。如果嘗試跨區域邊界拖放端點,那麼您將無法在任何目標端點上放落鼠標光標。通過區域的連接必須通過區域端點建立。
在模型中使用區域
爲了使模型更加真實,我們將兩個區域添加到在前面部分中建模的數據中心。第一個區域將環繞表示層,並將用於將該部分網絡從 HTTP 之外的所有通信協議獨立出來。第二個區域將包含服務層和數據庫計算機,並限制所有的外部通信(除了來自第一個區域的通信)。請按以下步驟操作:
1. |
首先,將 Zone 元素從工具箱拖放到設計表面。關係圖中的元素按 Z 順序排列,因此新的 Zone 元素可能會隱藏它下面的元素。 |
2. |
將 PresentationTier 邏輯服務器拖到 Zone 元素上,或者右鍵單擊該邏輯服務器,然後從 context 菜單中選擇 Move to Zone。Zone 元素會隔離所包含元素的通信,因此當邏輯服務器移到區域中時,所有通信路徑都會被移除。 |
3. |
在區域邊界和 PresentationTier 邏輯服務器之間拖動新的通信路徑。或者,端點的上下文菜單可讓您配置連接路徑。 |
4. |
使用“設置和約束編輯器”將區域的通信端點限制爲只允許 HTTP 協議。對於入站區域端點,清除 WebSiteEndpoint 以外的所有約束。對於出站區域端點,清除 HttpClientEndpoint 以外的所有約束。 |
5. |
將區域的 Name 屬性更改爲 PerimeterFirewall。 |
可以創建類似的區域來表示數據中心的 Intranet:
1. |
將新的 Zone 元素拖到設計表面上,然後將 Name 屬性更改爲 DatacenterIntranet。 |
2. |
將其餘的邏輯服務器拖到區域上,然後在區域中重新創建兩個邏輯服務器之間的通信路徑。 |
3. |
將新的傳入連接從區域邊界拖到 ServiceTier 邏輯服務器。 |
4. |
使用“設置和約束編輯器”將區域的傳入通信端點限制爲 HTTP 協議。 |
5. |
最後,將 PerimeterFirewall 區域的出站區域端點連接到 DatacenterIntranet 區域的入站區域端點。 |
模型的當前狀態如圖 7 所示。
圖 7. 模型的當前狀態
從 IIS 導入設置
雖然可以使用 Visual Studio Team Architect 手動創建基本邏輯模型(如圖 7 所示的模型),但是還有幾個有關手動創建描述的問題。手動創建模型的任務很艱難,特別是在大型數據中心內。您的數據中心越複雜,建模任務就越艱難。對於複雜的數據中心,該任務可能無法通過手動建模來實現。另一個問題是準確性。手動添加到模型的信息越多,所創建的數據模型就越容易不準確。
幸運的是,您可以直接從 IIS 導入邏輯模型(未來的版本將增加可以直接導入的元素的數量)。直接導入模型通過減少所需的手動工作量來簡化任務,而且還可以生成更準確的模型。
例如,如果 Windows 2003 Server 安裝利用增強的配置在網絡外圍運行 IIS,則可通過從邏輯服務器的上下文菜單中選擇 Import Settings 來導入特定服務器的當前設置。
完成導入過程後,可以立即使用該設置,並且隱式約束將根據導入的設置而觸發。還可以重命名元素並將其保存到工具箱中,以便在新的模型中重用。
小結
邏輯數據中心設計器是 Visual Studio Team Architect 的一個關鍵組件,用於創建數據中心的邏輯模型。這些模型可以由系統架構師和基礎結構架構師共享,以使他們能夠使用一組公共的工具來交流要求和期望。
Mickey Williams 是 Neudesic 的首席顧問。Neudesic 位於加州南部,它是 Microsoft 領先的 .NET 專業服務合作伙伴之一。Mickey 在各種平臺上構建關鍵任務的應用程序方面有豐富的經驗,他編寫或與他人合著了九本有關 Windows 編程的書籍。他與 .NET 相關的工作又重返到最初的公開出版方面。目前,他專門從事於構建和開發利用 .NET Framework 的關鍵任務應用程序,特別是在 ASP.NET、XML Web 服務和智能客戶端方面。