引言
WebSphere® Commerce 5.4 是运行在 WebSphere Application Server 4.0 上的可扩展度很高并且很灵活的电子商务应用程序服务器。本文描述了 WebSphere Commerce 的分布式配置及其与各种操作系统、数据库和 Web 服务器一起运作的能力。我们指出三层拓扑是提高系统性能和安全性的最佳拓扑结构。您可以通过水平克隆和多 Web 服务器配置来扩展这三层中每一层的容量。为了提高节点硬件资源的利用率,您可以通过垂直克隆。多实例(Multi-instancing)是一种在单系统上托管多个电子商务站点的好策略。如果使用分布式配置的话,您还可以利用防火墙、单点登录功能以及反转代理(reverse proxy)来增强电子商务系统的安全性和性能。
回顾 WebSphere Commerce
WebSphere Commerce 包含一个可定制程度很高的电子商务基础结构。它是一套运行在 WebSphere Application Server 上的集成软件组件。
最新版的 WebSphere Commerce 有许多卓越的功能和特性:
- 内置 B2B 和 B2C 模型
- 目录和店面的创建与管理
- 定单管理与洽谈记录管理
- 成员管理与系统安全性
- 支持多种语言和多种货币
- 安全的电子支付处理
WebSphere Commerce 支持:
- 操作系统:AIX®、Solaris、Windows® 2000 以及 Windows NT®
- 数据库:DB2® 或 Oracle 8i
- Web 服务器:IBM HTTP Server、iPlanet Web Server、Lotus® Domino™ Server 以及 Internet Information Server
另外,WebSphere Commerce 还可用于 iSeries™、zSeries™ 和 Linux 平台。本文讨论 WebSphere Commerce 在 AIX、Solaris、Windows 2000 和 Windows NT 操作系统上的分布式配置。
图 1. WebSphere Commerce 软件堆栈
WebSphere Commerce 支持多层拓扑结构。在这种拓扑结构中,数据库服务器和 Web 服务器位于 WebSphere Commerce 服务器的远程节点上。在本文中,两层是指数据库在一个远程节点上的一种拓扑结构,而如果数据库服务器和 Web 服务器在两个单独的远程节点上则是三层。
WebSphere Commerce 应用程序服务器支持克隆。垂直克隆是指同样的应用程序服务器在同一个节点上的一种拓扑结构。水平克隆是指同样的应用程序服务器在不同节点上的一种拓扑结构。
另外,WebSphere Commerce 还支持多实例。在这种配置中,多个独立的应用程序服务器运行在同一个节点上。
WebSphere Commerce 可以利用 WebSphere Application Server 的工作负载管理能力来同时与几个 Web 服务器通信。这样就可以扩展 Web 服务器层了。
分布式配置
我们看到过许多涉及 WebSphere Commerce 的分布式配置方案。我们使用了下列组件和策略的各种组合:
- 操作系统:AIX、Solaris、Windows 2000、Windows NT
- 数据库:DB2、Oracle 8i
- Web 服务器:IBM HTTP Server、iPlanet Web Server、Lotus Domino Server、Internet Information Server
- 多层拓扑:一层拓扑、两层拓扑、三层拓扑
- 克隆:垂直克隆、水平克隆
- 多实例
- Web 服务器群集
- 防火墙
对每一种方案或方案组合,它们都执行了下列测试步骤:
- 安装并配置了 WebSphere Application Server 4.0.2、一个数据库和一个 Web 服务器。
- 安装并配置了 WebSphere Commerce。
- 安装并配置了 WebSpehere Payment Manager 3.1.2。
- 创建了一个 WebSphere Commerce 实例。
- 创建了一个商店归档文件并从商店服务(Store Service)发布了一个商店模型(Store Model)。
- 按商店模型完成了购物流程。
- 执行了卸载。
- 开发并浏览了产品文档。
拓扑结构
单层拓扑是最简单的 WebSphere Commerce 配置。在这种配置中,Web 服务器、商业服务器、WebSphere Payment Manager 服务器以及数据库服务器全都安装在同一个节点上(即一个网络中的同一台物理机器上)。还需要执行少量的手工配置。在 Windows 2000 和 Windows NT 上,您可以随 WebSphere Commerce 自动安装 IBM DB2 和 IBM HTTP Server。
单层拓扑具有潜在的性能问题和安全问题。例如,在这种拓扑结构中四个服务器在运行时都争用一台机器的资源。因此,您就不能优化这四个服务器的节点性能。因为 Web 服务器与其他三个服务器在同一个节点上,所以因特网用户会得到信任,可以访问该节点上的所有内容。考虑到这些问题,单层拓扑就不是用于生产环境的理想拓扑结构。
在两层拓扑中,数据库服务器运行在与 Web 服务器和 WebShpere Commerce 应用程序服务器分离的一个节点上。为了提高安全性,您可以将数据库服务器放置在防火墙后的一个受信网上(例如,一个内部网上)。因为数据库服务器运行在它自己的机器上,所以您可以将机器调整到数据库的最高性能。在这种拓扑结构中,数据库不会同 WebSphere Commerce 应用程序服务器争用资源。性能与数据安全性在这种拓扑结构中都得到了提高。
图 2. 两层拓扑
在 WebSphere Commerce 的三层拓扑中,数据库服务器、Web 服务器以及 WebSphere Commerce 应用程序服务器运行在分离的机器上。数据库服务器节点和商业服务器节点被放置在一个或多个防火墙后面。最受欢迎的配置是:在 Web 服务器节点前面设一个防火墙,在 Web 服务器节点和 WebSphere Commerce 服务器节点之间设其它防火墙。Web 服务器被放置在非军事区(demilitarized zone,DMZ)内。每台机器支持一个服务器,允许您将支持 Web 服务器、WebSphere Commerce 应用程序服务器和数据库的机器调整到最高性能。这三个服务器不会互相争用资源。因此,三层拓扑比两层拓扑更灵活、更安全。
图 3. 三层拓扑
水平克隆
为了增加商业服务器层的容量,请向现有的 WebSphere Commerce 配置添加一些其他的节点。您可以将同样的 WebSphere Commerce 应用程序服务器安装在同一 WebSphere Application Server 管理域内的多个节点上。这就叫做水平克隆。每一台 WebSphere Commerce 应用程序服务器有它自己的 Java 虚拟机(JVM)。水平克隆被典型地用于三层拓扑中。
水平克隆共享同一个 WebSphere Application Server 和同一个商店数据库。另外,每一个克隆共享同一 Web 服务器、支付服务器以及支付数据库。只有 WebSphere Commerce 应用程序服务器被克隆。在运行时,通过 Web 服务器的 WebSphere 插件将入局请求分配给群集中的各个 WebSphere Commerce 应用程序服务器。如果 WebSphere Commerce 应用程序服务器宕机了,那么新的请求就会被分发给任何仍然运行着的 WebSphere Commerce 应用程序服务器。已停止的服务器的会话会由其他运行着的服务器自动接管。当 WebSphere Commerce 应用程序服务器回到联机状态时,它会自动地与其他在群集中的 WebSphere Commerce 应用程序服务器分担工作负载。水平克隆将不同物理节点上的多个商业应用程序服务器聚合到一个始终运行着的逻辑商业应用程序服务器中。
图 4. 水平克隆
图注: | WAS - WebSphere Application Server 数据库 |
WC - WebSphere Commerce 商店数据库 |
水平克隆有许多优势。首先,水平克隆可以通过附加的硬件增加商业应用程序服务器层的吞吐量。工作负载被分配给商业应用程序服务器。其次,商业应用程序服务器子集的故障转移不会中断整个系统。电子商务站点一直可用,并且因特网用户和电子商务站点之间的交互不会被破坏。
垂直克隆
与水平克隆相反,如果 WebSphere Commerce 应用程序服务器驻留的节点有额外资源(例如,额外的内存或对称多处理功能)的话,您就可以使用垂直克隆。垂直克隆不依赖 WebSphere Commerce 的拓扑结构。本文仅仅讨论三层拓扑中的垂直克隆。
在我们的模型中,同样的 WebSphere Commerce 应用程序服务器添加在同一个节点。这些商业应用程序服务器就是垂直克隆。每台应用程序服务器运行在单独的 JVM 上。垂直克隆将大量 JVM 添加到同一个节点。每台 JVM 使用一块单独的内存和一部分对称多处理器(symmetric multiprocessor,SMP)功能。在这种配置中,硬件资源被利用得最为有效。
与水平克隆相似,垂直克隆共享同一个 WebSphere Application Server 数据库和同一个商店数据库。另外,它们共享同一 Web 服务器、支付服务器以及支付数据库。只有 WebSphere Commerce 应用程序服务器被克隆。在运行时,入局请求被分配给节点上的垂直克隆。如果一个垂直克隆被关闭,则新的请求会被分配给其他正运行着的垂直克隆。会话会被自动地转移到其他克隆。当垂直克隆再开启时,它会自动与同一个节点上的其它垂直克隆一起分担工作负载。垂直克隆将同一个节点上的多个商业应用程序服务器聚合到一个逻辑商业应用程序服务器中,并将逻辑商业服务器扩展到物理机器的全容量。
图 5. 垂直克隆
图注: | WAS - WebSphere Application Server 数据库 |
WC - WebSphere Commerce 商店数据库 |
垂直克隆具有的一些优势。首先,垂直克隆能够提高吞吐量来充分利用节点上的硬件资源。结果,例如机器的内存和 SMP 得到了更高效的使用。其次,垂直克隆提供了故障转移保护,使得整个系统在垂直克隆的子集停止时仍然能运行。
多实例
不同的商业应用程序服务器运行在同一个节点上就叫做多实例。WebSphere Commerce 支持多实例配置。每一个实例有它自己的 JVM。多实例不依赖 WebSphere Commerce 的拓扑结构。在本文中,讨论与三层拓扑有关的多实例。
与垂直克隆不同,每一个实例使用它自己的商店数据库。像一个克隆,每一个实例与其他实例共享 WebSphere Application Server 数据库。另外,实例可以共享一个 Web 服务器。如果它们共享同一个 Web 服务器的话,那么 Web 服务器就必须支持多身份(也就是说,多个主机名和 IP 地址对)。每一个 WebSphere Commerce 实例必须有它自己的 Web 服务器身份。另外,每一个实例必须有它自己的支付应用程序服务器,只有其中一个服务器可驻留在同一个节点上作为商业应用程序服务器。各个实例独立地运行。不共享工作负载也不共享信息。多实例将一个物理节点拆分成多个独立的逻辑节点。
图 6. 多实例
图注: | WAS - WebSphere Application Server 数据库 |
WC1 - WebSphere Commerce 商店数据库 1 | |
WC2 - WebSphere Commerce 商店数据库 2 |
多实例具有独特的优势。首先,您可以使用多个实例在同一个节点上托管几个独立的电子商务站点,一个站点一个实例。这是电子商务服务提供者的最先选择。其次,您能够使用多实例来支持登台。可以使用一个实例作为生产服务器,其他的作为登台服务器。电子商务站点运行时开发可以继续进行。当测试完成后,只需把数据资产传送给生产服务器即可。登台服务器用于下一次开发周期。事实上对继续运行着的电子商务站点没有一点破坏。开发在生产环境中完成,因此电子商务站点的新发行版中让人感到惊奇的东西更少。这对于维护和更新电子商务站点是一个非常有用的功能。
Web 服务器群集
如果商业服务器层是限制吞吐量的瓶颈的话,那么水平克隆和垂直克隆是解决这个问题的理想的解决方法。另外,Web 服务器层的容量和可用性会影响整个系统。WebSphere Commerce 使用 WebSphere Application Server 工作负载管理功能来处理多个 Web 服务器。
与水平克隆类似,您可以将多个 Web 服务器添加到系统来组成 Web 服务器群集。WebSphere Commerce 能够与多个 Web 服务器同时通信。您可以使用 IBM Network Dispatcher(WebSphere Edge Server 的一个组件)之类的产品将入站请求转发给 Web 服务器。
IBM Network Dispatcher 和 Web 服务器共享一个公共的群集地址。Web 服务器是从网络分派器而不是直接从因特网获得请求。Web 服务器将请求转发到 WebSpehere Commerce 应用程序服务器并且从 WebSphere Commerce 应用程序服务器获得响应。Web 服务器将响应从商业应用程序服务器直接发送到因特网。如果 Web 服务器的子集变得不可用,网络分派器就会把新请求分发给正运行的 Web 服务器。结果,整个系统依然可用。当先前出现故障的 Web 服务器返回到联机状态时,网络分派器就会自动与其他 Web 服务器一同分担工作负载。多个 Web 服务器和网络分派器组成一个始终运行的逻辑 Web 服务器。
图 7. Web 服务器群集
与水平克隆类似,使用 Web 服务器群集有很多优势。首先,它可以增加 Web 服务器层的吞吐量。网络分派器可以在 Web 服务器间平衡工作负载。其次,Web 服务器子集的故障转移不会中断整个系统。电子商务的可用性得到了最大化。
值得一提的是,在运行备用服务器以最大化网络分派器的可用性时,IBM Network Dispatcher 不会导致新的单点故障。另一种解决方法就是配置多个网络分派器以实现互相备份。
IBM Network Dispatcher 不会成为性能的瓶颈。网络分派器不会为向因特网上的客户机发送 HTTP 响应而建立 TCP/IP 连接。这个连接直接在 Web 服务器和浏览器之间确立。HTTP 请求的带宽相对 HTTP 响应的带宽来说通常很小。请求分派和负载均衡通过在内核层转发信息包来完成。有关网络分派器的深层讨论不属于本文的范畴。
企业配置
分布式配置的中心思想是:通过扩展提高 WebSphere Commerce 的性能、可用性以及安全性。本文讨论了多层拓扑、商业服务器层上的扩展(也就是水平克隆和垂直克隆)、用多个 Web 服务器和 IBM Network Dispatcher 扩展 Web 服务器层以及多实例。
您可以把分布式配置的选项组合在一起来构建一种企业配置。网络分派器为所有 Web 服务器提供了因特网上的一个公共接口。入局流量在多个 Web 服务器间得到了均衡,每台 Web 服务器又均衡了多个商业应用程序服务器间的负载。在每个商业服务器节点上存在着多个实例或垂直克隆。数据被存储在后端数据库中。插入防火墙,一个插在网络分派器前面,一个插在 Web 服务器和商业服务器之间。另外,有一个备用网络分派器和一个数据库服务器。
数据库层上进行扩展是可能的。WebSphere Commerce 将数据库视为一个逻辑数据库。数据库层的物理配置对商业应用程序服务器的配置或行为不起作用。为了确保高可用性,您可以配置一个备用数据库来镜像正工作着的数据库。如果主数据库出现故障,备用数据库就会接管来为数据服务。AIX 上的 IBM DB2 可以使用一个名为"高可用性群集多处理(high availability cluster multiprocessing,HACMP)”的功能部件来实现这一点。有关数据库的配置的讨论不是本文的范畴。
图 8. 企业配置
作为企业配置的一个例子,在一个设有三个水平克隆的三层拓扑上完成了压力测试和可靠性测试。使用了一个 Web 服务器节点、三个商业服务器节点和一个数据库服务器节点。操作系统是 Windows 2000。Microsoft IIS 被用作 Web 服务器。WebSphere Payment Manager 3.1.2 被安装在其中一个商业服务器节点中。IBM DB2 7.2 被用作数据库服务器。可以看到,B2B 和 B2C 商店模型的案例并发性和完成程度都有了明显的增加。
结束语
WebSphere Commerce 是一种可扩展度很高并且很灵活的产品。它支持远程 Web 服务器和远程数据库拓扑结构。具有 Web 服务器群集和水平克隆的附加节点支持可扩展的 Web 服务器层和商业服务器层。您可以通过垂直克隆来确保硬件资源能得到充分利用。您也可以通过多实例来托管多个电子商务站点或用来登台(staging)。防火墙和网络分派器提供额外的安全性和可扩展性。
(责任编辑:城尘)