逻辑数据中心设计器简介 — 第二部分
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 服务和智能客户端方面。