使用MicrosoftWindowsDNA平台构建Web站点的蓝图草图,.9版MicrosoftCorporation2000年1月目录执行摘要2体系结构概述2简介2体系结构目标2体系结构元素3示例站点7简介7Internet9DMZ9安全网络10摘要11可伸缩性12简介12扩展客户和内容12扩展业务复杂性15可用性18简介18前端系统的可用性19网络基础结构的可用性19后端系统的可用性20安全性20简介20网络保护21平台保护23客户(成员)访问控制24要点25管理与运作25简介25管理基础结构26管理系统需求29摘要32执行摘要商务正迅速发展为标准的、基于Web的计算模型,其特征为重复且针对任务的系统的松散连接层。很大比例的商务Web站点—提供联机服务的服务器、应用程序和数据的集合—都是用当今的MicrosoftWindowsDNA平台构建的,成为该计算模型的基础。本文档定义了构建WindowsDNA站点的体系结构。读者可以借用这些信息,设计和构建当今基于WindowsDNA的站点。本文档集中讨论如何使用Microsoft技术,特别是WindowsDNA平台,以尽可能有效利用财力和时间的方法,构建可伸缩、可用、安全和可管理的站点的基础结构。强调保持Web站点简便灵活的运作和应用程序设计,以及“.com”如何能够成功地以必要而有效的可伸缩性、可用性、安全性和可管理性来部署和运作站点。其次强调当前文档齐全的工具和构建Web应用程序组件的方法。另外还从宏观层次检查MicrosoftWindowsDNA解决方案(使用Microsoft®WindowsNT®4.0和/或Windows2000)的优点,并逐级进入,以定义如何使用Microsoft产品建立站点体系结构中的每一层次。最后,将讨论使用Microsoft工具和技术管理Web站点。尽管只是个概述,本文档还是检查了一个成功使用部署的体系结构的示例Web站点,它可作为使用WindowsDNA平台构建的站点的模型。本文档不涉及(除了与可伸缩性、可用性、安全性和可管理性相关时)诸如应用程序设计、开发工具或数据库设计等主题;但是提供涵盖这些领域的相应文档的指针。“体系结构概述”介绍一些对于大型Web站点很重要的体系结构概念。在“示例站点”描述了一个具有代表性的站点并解释了它使用的基础结构和各层。其余章节讨论了站点的四个关键属性—“可伸缩性”、“可用性”、“安全性”和“可管理性”—并使用示例站点来说明这些问题。对相关文档的引用贯穿整个文档。体系结构概述简介大型商务站点为动态变化的模型:它们通常一开始很小,但随着需求的增长而指数增长。不仅在支持的独特用户的数量上不断增加,这种增长非常迅速,而且在提供的用户服务的复杂性和集成性方面也不断增长。经投资者的检查,许多站点启动的商务计划的可伸缩性为10-100倍,这个数据是可信的。成功的商务站点,通过不断增加向客户机提供逻辑服务的服务器数量(即通过服务器提供其自身的多个实例(克隆)或通过在自身之间均衡工作负荷),以及创建与已有计算机系统相集成的服务来管理这种增长和变化。这种增长的基础为支持高度可用性的坚实的体系结构、安全基础结构和管理基础结构。体系结构目标本文档描述的体系结构力图达到四个目标:线性可伸缩性—可持续增长以满足用户需求和业务复杂性。持续的服务可用性—使用冗余和功能专业化来提高容错能力。数据和基础结构的安全性—保护数据和基础结构免受恶意攻击或盗用。管理的简便性和完整性—确保运作能够满足增长的需求。可伸缩性为了可以扩展,商务Web站点将其体系结构分为两部分:前端(客户机可访问的)系统和存储长期永久数据的或商务处理系统所在的后端系统。负荷平衡系统用于将工作分配到每一层的系统中。前端系统通常不保留长期状态。也就是说,前端系统中每次请求的环境通常是暂时的。这种体系结构,通过克隆或复制与无状态负荷平衡系统(使负荷在可用的克隆体之间分配)相耦合的前端系统,扩展其支持的独特用户的数量。我们将克隆体集合中的IIS服务器集合称为Web群集。在多个后端系统之间分区联机内容同样可以扩展。带状态的或内容敏感的负荷平衡系统则将请求路由到正确的后端系统。通过功能专业化,业务逻辑复杂性以可管理的方式增长。专用的服务器负责专门的服务,包括与遗留或脱机系统的集成。克隆与分区,和功能专业化服务一起,通过单独增长每个服务而使得这些系统具有极大的可伸缩性。可用性通过使用多个克隆服务器(所有服务器均为其客户机提供唯一的地址)使得前端系统具有高度可用性和可伸缩性。负荷平衡用于在克隆体之间分配负荷。将故障检测功能置入负荷平衡系统提高了服务的可用性。不再提供服务的克隆体将自动从负荷平衡集合中删除,而剩下的克隆体将继续提供服务。使后端系统具有高度可用性更具挑战性,主要是因为它们维护着数据或状态。它们通过对每个分区使用故障转移群集(failoverclustering)来实现高度可用。故障转移群集假定应用程序能够在可以访问故障系统的磁盘子系统的其他计算机上继续运行。分割故障转移发生在支持分区请求的主节点故障时,此时分区请求自动切换到二级节点。二级节点必须有权访问与故障节点同样的数据存储,该数据存储也应该是复制的。复制品还可通过在远程位置上成为可用,来提高站点的可用性。可用性在很大程度上还取决于企业级IT规则,包括更改控制、严格测试和快速升级以及反馈机制。安全性安全性—通过为信息的机密性、保密性、完整性和可用性提供充分的保护来管理风险—是任何商务站点成功的基本要素。商务站点使用多个安全域,其中包括具有不同安全性需求的系统,每个域均受到网络过滤器或防火墙保护。有三种主要的域,互相用防火墙隔离,它们是:公共网络;DMZ(由军事术语“非军事区域”派生而来),是前端和内容服务器所在之处;以及安全网络,是创建或使用内容的地方,也是管理和存储安全数据的地方。管理管理和运作广泛涉及维护商务站点及其服务正常工作所需的基础结构、工具以及管理员和技术人员。许多站点均位于常称作宿主环境的地方。也就是说,这些系统配置有“Internet服务提供商(ISP)”或专家宿主服务,这里可提供丰富的Internet连通性。因此,系统的管理和监控必须远程完成。在这种体系结构中,我们将描述这种管理网络和网络必须支持的管理功能类型。体系结构元素本节要突出的商务Web站点的关键体系结构元素包括:客户机系统;负荷平衡的、克隆的前端系统(客户机系统可用访问的);负荷平衡的、分区的后端系统(前端系统可用访问这里的永久存储);以及三种拱形体系结构考虑:灾难承受能力、安全域及管理和运作。大型商务Web站点的原理图1展示了商务Web站点的概念和基本原理,这些内容将在本节的以下部分详细说明。图1.体系结构的原理图1显示了前端、后端和负荷平衡层的划分,正如本文档所述。防火墙和网段分区为安全原理的关键。客户机在这种站点体系结构中,客户机向某服务名称发送请求,该服务名称代表提供给客户机的应用程序。最终用户和客户机软件不知道提供服务的系统的内部运作方式。通常,最终用户键入第一个URL,例如,,然后单击超级链接或完成Web页上的表单以便向站点深处导航。对于范围广泛的Web站点,一个重要的决定就是是否在浏览器中支持功能的最低公共集,或是否为不同的浏览器版本提供不同的内容。目前,尽管还有更旧的浏览器在使用,但HTML3.2通常为所支持的最低版本。例如,浏览器可如此分类:支持HTML3.2的,如MicrosoftInternetExplorer3.0;支持动态HTML(DHTML)的,如InternetExplorer4.0;以及支持ExtensibleMarkupLanguage(XML)的,如InternetExplorer5.0。然后为每个类提供不同的内容。IIS和工具,能够创建可动态呈现给不同浏览器的页面。前端系统前端系统由向Web客户机提供核心Web服务(如HTTP/HTTPS、LDAP和FTP)的服务器组成。开发人员通常将这些前端系统分为一系列称作克隆体的相同系统的集。它们运行相同的软件,并通过内容复制或高度可用的文件共享访问相同的Web内容、HTML文件、ASP、脚本等。通过克隆体之间的负荷平衡请求,以及通过检测故障克隆体并将其从工作的克隆体中删除,可实现高度可伸缩性和可用性。克隆体(无状态前端)克隆是为Web站点增加处理能力、网络带宽和存储带宽的良好手段。由于每个克隆体在本地复制存储,因此,所有更新必须应用到所有克隆体上。但是,由于与负荷平衡、故障检测和消除客户机状态的耦合,克隆的确是扩展站点和提高可用性的良好方法。无状态负荷平衡负荷平衡层向用户提供一个服务名称并将客户机负荷分配给多个Web服务器。这将为服务器集提供可用性、可伸缩性和某种程度的可管理性。负荷平衡手段有多种,包括“RoundRobin域名服务器(RRDNS)”及各种基于网络的和基于主机的负荷平衡技术。维护客户机状态我们不希望在克隆前端系统中维护客户机状态,因为这与透明客户机故障转移和负荷平衡相抵触。在会话间维护客户机状态的基本方法有两种。一种是将客户机状态存储在分区的后端服务器中。(由于客户机状态可以完全分区,因此也易于扩展。但是,需要对每个客户机请求检索该状态)。在会话间维护客户机状态的另一种方法是使用cookie和/或URL。Cookie是由客户机Web浏览器管理的小文件。它们无益于减小带状态服务器的负荷和增加无状态前端系统的实用性。数据还可以存储在URL中,并在用户单击显示的Web页上的链接时返回。前端可用性当在这些前端服务器上运行应用程序代码时,无论是用MicrosoftVisualBasic(R)或C++等高级语言还是用脚本编写,从不同的Web应用程序隔离编程错误是非常重要的。使应用程序代码在Web服务器的进程外运行,是相互隔离编程错误和避免Web服务器故障的最佳方法。后端系统后端系统是维护应用程序数据的数据存储,也是启用与其他维护数据资源的系统的连通性的数据存储。数据可以存储在普通文件、数据库系统(如MicrosoftSQLServer(TM))或其他应用程序中,如下表所示。表1.数据存储的不同类型文件系统数据库其他应用程序示例文件共享SQLAdinsertion、SAP、Siebel数据HTML、图像、可执行文件、脚本、COM对象类别、用户信息、日志、帐单信息、价格表库存目录/库存、标语广告、帐目信息使后端系统扩展和具有高度可用性更具挑战性,主要因为它们必须维护数据和状态。一旦单一系统的可伸缩性已经达到,就必须分区数据并使用多台服务器。因此,持续的可伸缩性是通过数据分区和将逻辑数据映射到正确的物理分区的数据相关路由层或带状态负荷平衡系统来实现的。对于提高的可用性,群集—通常由两个访问公共的、复制的或RAID(独立盘的冗余数组)保护的存储器的节点组成—将支持每个分区。当一个节点上的服务失败时,另一个节点将接管分区并提供服务。分区(带状态的后端系统)通过复制硬件和软件及在各节点之间划分数据,分区增强了服务能力。通常,数据是按对象分区的,如邮箱、用户帐户或生产线等。在某些应用程序中分区是按时间进行的,例如按天或按季度。也可能用随机分区的方法分布对象。拆分和合并分区需要工具,最好是联机的(不用中断服务),符合系统变化的需要。增加宿主分区的服务器数量,提高了服务的可伸缩性。不过,分区的选择将决定访问模式及其产生的负荷。甚至在分布请求时也要避免出现热点(一个分区接收的请求数量不成比例),这对设计数据分区也很重要。有时这很难避免,而且必须有大型多处理器系统宿主分区。分区故障转移,即服务自动切换到二级节点(退回未完成的事务),可提供持续的分区可用性。带状态负荷平衡如果数据按多个数据服务器分区,或开发提供专用功能的服务器来处理特定类型的Web请求,必须编写相应的软件将请求路由到相应的数据分区或专用服务器。通常,该应用程序逻辑是由Web服务器运行的。其编制目的是确定相关数据的位置,并且根据客户机请求的内容、客户机ID或客