日期:2013-06-30  浏览次数:20640 次

Microsoft Application Center 2000 组件负载平衡技术概述

作者:Chris Rees
本技术概述将讨论 Microsoft Application Center 2000 (Application Center) 组件负载平衡技术 (CLB)。
引言
Microsoft Application Center 2000 (Application Center) 是 Enterprise Server 的一部分,而 Enterprise Server 是 Microsoft 公司推出的 .NET 概念的组成部分。Enterprise Server 包括的其它成员有:Commerce Server 2000、BizTalk Server 2000 和 SQL Server 2000。有关 .NET 的详细信息,请查看站点: http://www.microsoft.com/net
.NET 中 Application Center 的用途是,为基于 Windows 2000 和 Internet Information Services 5.0 的 Web 站点提供内容部署和管理功能。Application Center 使 Web 站点可伸缩、更强劲、易于管理而且更加安全。其核心思想就是由许多 Web 服务器组成一个群集,对客户来说,这个群集就是一个 Web 站点。与此相配合的思想是,被复制到所有群集成员的单个应用程序映像。应用程序映像含有商务解决方案所需的所有部分, 包括 Web 站点、注册表设置、文件、COM+ 组件等。通过反映群集当前状态的事件、性能计数器和监视器,可以很容易地监视群集的运作状况。
Application Center 群集
通过Application Center,可以构建多级群集,它们可以使用各种负载平衡技术。负载平衡技术有助于 Application Center 提供可伸缩性和稳定性。有两种负载平衡技术受到支持:
  • 网络负载平衡 (NLB)
  • 组件负载平衡 (CLB)

Application Center 群集的拓扑结构决定了该如何支持负载平衡技术。一种典型的 Application Center 群集拓扑是以 n 层解决方案为基础的,这种解决方案中包括一个 Web 层群集,用来为客户机提供内容服务。这种 Web 层群集就使用了 IIS 和网络负载平衡 (NLB) 来满足传入的 IP 请求。
file:///F:/My%20Work/技术文档/服务器群设置/Microsoft%20Application%20Center%202000%20组件负载平衡技术概述.files/CLBOVR01.gif
图 1 Application Center 群集的典型拓扑结构
Web 层群集上的软件(ASP 页等)可以在本地计算机上创建和使用 COM+ 组件,或者在另一台远程计算机上通过使用分布式 COM 创建和使用 COM+ 组件。如果没有 CLB,远程活动将是静止的,因为它与已经加在远程服务器上的工作负载无关。这就是 CLB 的真正用途 — 让安装在独立服务器群集上的 COM+ 组件进行可靠、可伸缩和负载平衡地操作。
网络负载平衡
网络负载平衡 (NLB) 是 IP 负载平衡技术,它是 Windows 2000 Advanced Server 和 Windows 2000 Data Center 的一部分。有了 NLB,传入的 TCP 通信、用户数据报协议 (UDP) 通信和一般路由封装 (GRE) 通信请求被分发给各个群集成员。分发的依据是基于服务器负载百分比设置的统计算法。NLB 提供了动态伸缩功能,即在不影响客户机的情况下,自动适应群集内服务器的添加和删除。NLB 是鲁棒的,因为它可以检测到服务器故障,并将其从正运行的群集内悄悄地删除。
Application Center 大大简化了对基于 NLB 的群集的管理。Application Center 群集创建向导会自动配置 NLB 设置。这比单机使用 Windows 2000 时所需的步骤要简单得多。Application Center 还易于在群集内添加、删除服务器,以及将服务器置于联机/脱机状态。
有关 NLB 的详细信息,请查看站点:http://www.microsoft.com/windows2000/library/howitworks/cluster/nlb.asp
组件负载平衡
组件负载平衡技术可以使 COM+ 组件实现负载平衡。COM+ 组件是经过编译的软件对象,可用于多种不同语言,包括 VBS、ASP、Visual Basic 和 C++。它们提供了一种很有用的方法,用来把软件绑定到方便且可重用的实体中。在 CLB 中,COM+ 组件位于独立的 COM+ 群集内的服务器上。旨在激活 COM+ 组件的调用被均衡地加载到 COM+ 群集内的各个服务器上。如图 1 所示,CLB 软件的决策元素运行在 Web 层上。有些收集信息的 CLB 软件的确在 COM+ 群集上运行。
组件对象模型
CLB 的根部是组件体系结构,这一结构由组件对象模型 (COM) 构成。当根据这一标准编写基于对象的软件时,该标准提供了一种使软件服务可用的通用机制。它允许以各种语言、在各种操作系统中编写软件。实现这种灵活性的关键是 COM 接口。
COM 组件的功能通过一个或多个接口来实现。要想使用 COM 组件,客户软件必须以一种知道如何处理接口的语言编写。Visual Basic、ASP、VBS、JavaScript 和 Visual C++ 等语言都是可以的。接口本身只是一个由数字组成的表,其中保存着该接口所支持的方法的地址。
file:///F:/My%20Work/技术文档/服务器群设置/Microsoft%20Application%20Center%202000%20组件负载平衡技术概述.files/CLBOVR02.gif
图 2 COM 组件上的接口
通常,COM 组件位于动态链接库 (DLL) 或者可执行文件 (.exe) 内。它们可以安装在客户机上,也可以位于远程计算机上。当它们被远程使用时,由基于远程过程调用 (RPC) 的分布式 COM (DCOM) 机制来完成调用。
COM+ 服务
COM+ 服务是 Windows 2000 操作系统的一部分,提供了一套基于 COM 和 Microsoft Transaction Sever (MTS) 的服务。COM+ 服务提供了企业级功能,如事务支持、对象生存期服务、安全服务、事件、排队组件等。
COM+ 组件
COM+ 组件是可以利用 COM+ 服务的 COM 组件。对 COM+ 组件的要求之一是它要携带配置信息。配置信息是一组属性,它们使得底层 COM 体系结构能够查明特定的 COM+ 服务(例如事务支持,还有后面我们将要提到的负载平衡)是否被支持。
COM+ 组件被集合组成称为“应用程序”的软件包,这里的应用程序不同于 Application Center 应用程序。COM+ 应用程序是一组 COM+ 组件,而 Application Center 应用程序则是商务解决方案中使用的一系列资源。这方面的例子有 Web 站点、文件、COM+ 组件,以及注册表项。
组件负载平衡的工作方式
CLB 有两大部分:
  • 用于 COM+ 群集负载平衡的 CLB 软件。
  • COM+ 群集(一个由 Application Center 管理的服务器群集,用来激活和运行 COM+ 组件。)

CLB 软件
CLB 软件负责确定激活 COM+ 组件时使用 COM+ 群集成员的顺序。
用于创建 COM+ 组件的业务逻辑运行在 Web 层群集上。这通常是一个 Visual Basic ASP 脚本,当要求使用 COM+ 组件时,该脚本便调用 CreateObject。(在内部被转换为对 CoCreateInstance 的调用)。使用 CLB 时,不是在本地服务器上创建组件,而是用路由列表和服务器响应时间表来帮助把 COM+ 组件激活请求传递到已实现负载平衡的 COM+ 群集。然后,COM+ 群集成员创建组件并对客户机返回一个接口。组件一经创建,CLB 就不再对其进行更多的操作。

路由列表


路由列表存在于每个 Web 层群集成员上,其中含有需要进行负载平衡的 COM+ 群集成员列表,如图 3 所示。另外,路由列表还存在于一个称为 COM+ 路由群集的位置。这个位置只用于路由,而没有 Web 层功能。本白皮书将重点介绍 Web 层方案。
file:///F:/My%20Work/技术文档/服务器群设置/Microsof