首页 > 开发 > 综合 > 正文

转贴:Microsoft Application Center 2000 组件负载平衡技术概述(1)

2024-07-21 02:17:21
字体:
来源:转载
供稿:网友


收集最实用的网页特效代码!

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/技术文档/服务器群设置/microsoft%20application%20center%202000%20组件负载平衡技术概述.files/clbovr03.gif
图 3 路由列表和响应时间
路由列表最初由 web 层群集控制器上的管理员创建,然后自动与每个群集成员保持同步。这样一来,就不可能(实际上也不可取)让群集成员具有的路由列表中包含变化的 com+ 群集成员。在每个 web 层群集成员上都有路由列表的一大优点是,消除了单点故障。如果某个 web 层群集成员停止运行(无论是否故意),其它成员将继续通过自己的路由列表对 com+ 群集进行负载平衡。

响应时间表


每隔 200 毫秒,运行在每个 web 层群集成员上的 clb 软件就对自己路由列表中的每个成员进行轮询。自此,就在内存中创建了一个表,其中以响应时间为等级列出了 com+ 群集成员 — 响应越快的成员在表中的地位就越高。web 层成员以循环的方式使用响应时间表,以此将接收到的激活请求传递到 com+ 群集成员。这意味着,当接收到激活请求时,响应最快、最不繁忙的 com+ 群集成员被首先使用,次快的成员被用来处理下一个请求。响应时间表用完之后,下一个请求将被发送到表中的第一条。就这样依次处理后面的激活请求。这种情形将继续下去,直到对响应时间作了更新为止,并且激活请求被重设到新负载平衡表的开头。
每个 web 层群集成员都拥有自己的 com+ 群集成员响应时间表。不要试图在整个 web 层群集内让这些值保持同步,因为路由列表的复制速度跟不上 com+ 群集负载的变化。
com+ 群集
在 web 层群集内,管理员利用 application center 群集创建向导来创建 com+ 群集。每个群集成员都必须装有相同的 com+ 组件副本。有一个部署向导可用来安装组件。组件一经创建,就必须知道自己是在 clb 群集内。
支持群集的 com+ 组件
为了使用 clb,必须编写 com+ 组件来确认它们所处的状况。其关键问题是组件状态。在 com+ 中,组件不应该保留每个组件的状态信息,因为这样会对可伸缩性和事务管理有负面影响。可伸缩性之所以会受影响,是因为如果组件是有状态的,就无法被重新利用。事务管理之所以会更复杂,是因为每个组件的状态无法穿过事务边界。使用 clb 时还要考虑其它的因素。从本质上讲,不必担心成员节点的位置,因为在 clb 群集的任何成员上都可以创建组件。例如在 com+ 中,全过程存储可以用来存储对服务器上运行的多个组件都有用的信息。在 com+ 群集内使用这一技术时需要细心的管理,因为无法保证一个组件将在哪个成员上创建。这样一来,后面对于组件的再激活将有可能发生在别的群集成员上。这就使得组件丧失了对前一个成员上的全过程存储的访问权。
组件状态要么应保存为永久状态(如 dbms),这样可以从任何群集成员访问它;要么应保存在客户机上(如 cookie 信息就保存在 internet 客户机上)。
建立组件负载平衡
以下是建立 com+ 群集所需的步骤。这些步骤基于 application center beta 2 中的功能。
  1. 建立群集
    clb 需要两个群集。一个群集用于保存路由列表,如前所述,这个群集通常位于 web 层群集上。另一个群集是 com+ 群集。请参见联机帮助中的“creating cluster”(创建群集)。
  2. 将 com+ 组件部署到 com+ 群集上。
    通过使用部署向导,可以将 application center 应用程序部署到其它群集上。对于用来将更新后的内容部署到运行群集上的过渡群集,这很有用。请参见图 4。通常,要从一个 stager(过渡服务器)上运行向导,该 stager 拥有打包在 application center 应用程序中的 com+ 组件。请参见联机帮助中的“synchronizing and deploying content”。
    file:///f:/my%20work/技术文档/服务器群设置/microsoft%20application%20center%202000%20组件负载平衡技术概述.files/clbovr04.gif
    图 4 application center 中的 stager
    注意 默认情况下,不部署 com+ 组件,因为组件部署要求重新启动目标 iis 服务,还可能导致计算机重启。然而,部署向导提供了一种选项,可以强制进行 com+ 组件部署。
    这样,在组件部署期间避免整个群集宕机就很重要了。这需要进行分阶段部署,让群集成员脱机,更新,然后再联机。有关这个问题的更多信息,请参见 microsoft application center 2000 resource kit
  3. 将 com+ 组件部署到 web 层群集上
    clb 要求将 com+ 组件安装在每个 web 层群集成员上。同样,可以使用部署向导来完成这件事。可以将 com+ 组件打包进已部署到 web 站点的 application center 应用程序中。但要记住,com+ 组件部署将要求重新启动 iis 服务。所以,为确保 web 站点总是可用,分段组件部署就很重要。值得注意的另一点是,web 层群集组件部署需要与 com+ 群集保持同步。否则,当 web 站点处于活动状态时,web 层群集和 com+ 群集可能装有不同版本的组件。要了解更多的信息,请参见 microsoft application center 2000 resource kit
  4. 将 web 层 com+ 组件标记为支持 clb
    web 层群集上的 com+ 组件需要被标记为支持 clb。这要通过 application center 管理单元中已有的 component services explorer 来完成。标记组件的方法是在包含它的 com+ 应用程序中找到它,选择属性页上的 activation 选项卡,然后选中 component supports dynamic load balancing 复选框。
  5. 创建路由列表
    路由列表是在 web 层群集控制器上创建的,并自动在整个 web 层群集上保持同步。可以通过 application center 中的 web 层群集属性页上的组件 services 选项卡来添加 com+ 群集成员列表。

这样就可以了。一旦所有的东西安装完毕,代表客户端运行的 web 层软件将使用 com+ 群集内的 com+ 组件,com+ 组件的位置不会对此操作有影响。
   
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表