通过高级的集群功能,基于BEA WebLogic Server的电子商务应用可以跨越多台服务器。(注意:WebLogic Server支持多种类型的集群,其中仅有一个和本文相关--它叫做Web Clustering。在Web Clustering中,强调了HTTP集群或Web应用的表示层。这就是这儿提到的。) 复制应用的组件及其状态,以及客户端会话状态信息以提高可用性。如果服务器中间会话(mid-session)失败,可以在另一台服务器上恢复客户端会话,不会丢失会话数据。 WebLogic Server集群使得该功能对视集群为单个"虚拟服务器"的客户端透明。
伴随着软件基础结构逐渐演变为包含了对Web内容的发送进行优化的专业应用服务器,网络基础结构也演变?quot;内容识别(content aware )"。Cisco System是内容交换开发的先驱,所谓内容交换是指用来优化基于Web的应用的发送的一类网络设备。这些高性能的网络设备理解基于Web的事 务的本质,并知道如何在规定时间内及时将它们路由到性能最好的服务器上。用它们来提高基于Web的应用的可伸缩性、性能、可用性和安全。 本文介绍了如何使用Cisco CSS 11000 Series Content Services Switches ("Cisco内容交换机")最大化BEA WebLogic集群的性能。
起作用的WebLogic集群
可能需要多个HTTP操作才能完成单个客户端事务。基于Web的股票交易门户的表示接口就是一个这样的简单例子。客户端可能通过多个步骤 来执行交易(获得报价、进行调查、下���单、接收确认等等)。应用程序跟踪该事务的"状态"和它后面的每个阶段。为了避免失败 ,可以将该会话状态复制到另一台服务器上。如果主服务器出现故障,该会话状态被重新初始化到新的服务器上(托管状态副本的服务器或恢复状态的第三个服务器)。WebLogic支持三类不同的复制和恢复会话状态的方法:数据库复制(通过JDBC)、基于文件的复制和内存中的复制。
文件和数据库复制很相似。集群中的每台服务器保持到共享文件服务器或数据库服务器的连接。创建或改变状态信息时将它写入文件或数据库记录中。当集群中的服务器出现故障时,后续客户端请求被路由到集群中其他可用成员上。新服务器读取会话ID(在初始化会话时建立,并存储在cookie中或写入到请求的URL中),并且从数据库或文件系统中取得相关的状态。现在新服务器能够继续处理客户端的事务。
内存中的复制将状态信息从主服务器发送到内存中指定的备份服务器上。如果主服务器出现故障,客户端将被路由到新的服务器上。该新的服务器具有状态副本(在这种情况下,它指定新的服务器作为备份,创建会话状态的备份副本,并担当主服务器的角色)或从备份中(在这种 情况下,它担当主服务器的角色,从旧的备份中清除会话状态,建立新的备份服务器,并在备份上创建新的状态副本)获取状态。类似于会话 ID,备份服务器的ID也被写入cookie或URL,从而允许新的服务器从备份中恢复会话状态。新的服务器能够继续处理客户端事务。
请求路由
由于同一集群中的多个服务器能够服务于一组特定的客��端请求,所以必须通过某些机制,将对"虚拟服务器"的客户端请求路由 到集群中某台真正的服务器。这种请求路由机制的第一个也是最简单的目标如下所述:
1、均衡集群中可用服务器上的负载
对于需要多个HTTP操作的事务(也可能是多个TCP连接),一旦和特定的服务器集群成员之间建立了客户会话,后续操作必须被定向到同一个 成员,直到会话结束。这将减少开销,并且能够为每个连续的操作从另一台服务器上获取会话状态。因此改善了用户的响应时间并提高了集群总的利用率。因此WebLogic集群请求路由的第二个目标是:
2、保持客户端和协助执行复杂事务逻辑的集群成员之间的"持久会话"
公共域DNS服务器(如BIND)中可用的基于DNS的简单负载均衡允许操作者配置多个具有特定域名(例如,www.mystore.com)的主机地址。访问该站点的客户端被按"round robin"(轮循)的方式解析成每个配置的地址。客户端将缓存通过域名本身返回的名字到地址的映射,主要是为了DNS服务器中 time-to-live(生存时间)配置。(注意:虽然这是DNS客户端的指定性能,实际的性能根据操作系统和浏览器有所变化。)对同一主机名的后续请求将转向同一台服务器(利用缓存映射)--因此执行会话连续性的一个原始类型。然而,基于DNS方案的一个主要的缺点是它们不能在服务 器出现故障时路由。一旦客户端"绑定到"服务器,该绑定将一直保持下去,直到缓存的名字到地址的映射的生存期过期。所以,客 户端将一直尝试连接主机,即使该服务器已经出现故障或者不再服务了。很明显,健壮的本地请求路由机制中需要使用的不仅仅是简单的 round-robin DNS。(注意:当基于DNS的技术中结合了更加强壮的本地请求路由机制后,该技术对于灾难恢复和多个物理隔离的地址之间的均衡负载非常有用。)因此,我们上面所列的请求路由目标应该再扩展。
3、快速检测并路由到服务器及处理失败
基于Proxy Web服务器的请求路由采用的方案是:在前端终止带有其他接受传入客户端请求并将它们定向到适合的服务器的集群。一个典型的例子是,BEA Weblogic Server充任第三方Web服务的代理。加入集群协议后,代理能够快速检测服务器的故障并路由它们。会话持久性是通过检查会话cookie来提供 的。由于它是集群的正式成员,代理能够理解会话cookie的格式以及会话和服务器之间的关系。然而,由于它们是通用的应用服务器,这些代理没有针对请求路由进行优化,因此性能比专业的负载均衡应用要差。
负载均衡应用是通用PC,它具有用于负载均衡应用的软件。这些通用的体系结构和第一代路由器很相像,使用单个、中央CPU进行所有负载 均衡决策和分组转发。通过使用off-the-shelf PC主板(如SSL加速卡)并且编写驱动程序将它们和系统其他部分集成起来,可以添加其他的功能。通过把注意力集中在特定的任务上,这些 应用能够比基于它们的代理服务器的对应部分提供更好的性能、冗余和特性。然而,应用的硬件体系结构最终成为集群性能和可伸缩性的瓶颈。对于企业级应用,性能是请求路由必须考虑的一个目标。该目标如下所述。
4、与预期客户端请求的容量和数据传输速率相一致
和通用处理体系结构成为限制第一代路由器的因素一样,通用PC体系结构成为限制请求路由的因素。意识到这一点后,Cisco System首先开始开发现在被称为"内容交换"的技术。与内容交换机相关的核心知识产权为一个交换体系结构,它将请求路由的分组转发功能的处理(如网络地址转换[NAT]、TTL递减、MAC地址替换等等)分割成请求路由的控制功能的处理(如服务器选择、会话建立和健康检查等)。该函 数的基本分割允许Cisco内容交换机提供比基于PC的负载均衡设备更加好的特征和功能及性能。
Cisco内容交换机提供服务器机群的高可用性
从逻辑角度来说,Cisco内容交换机部署在WebLogic集群的前端,如图1所示。客户端对集群的请求被定向到一个虚拟IP地址(VIP), 它代表 了到外部世界的集群。Cisco内容交换机接收到来自于外部世界的连接和HTTP请求,并根据已配置好的策略将它们路由到合适的集群成员上。这 些策略考虑了前面讨论的故障转移(failover)和持久机制。
Cisco 内容交换机为维护高可用性的WebLogic集群提供了一组完整的特性,包括交换机冗余、会话状态故障转移和高级健康检查。
交换机冗余
Cisco内容交换机通常部署在冗余对中。如果主交换机出现故障,副交换机将会接管它的任务。根据会话状态冗余的配置,不用破坏客户端到 服务器的连接就能进行故障转移。某些配置可能将主交换机和副交换机同时用作某些服务器或内容类型的活动交换机和备份交换机--该配置叫 做"Active-Active"冗余。
会话状态冗余
对于一些应用,当Cisco内容交换机出现故障转移时,客户端到服务器的现有连接一定不能被破坏。对于这类应用,可以配置内容交换机同 时在主副交换机上保存会话状态信息。万一发生故障,冗余交换机将在底层网络重新会聚的同时,转发分组。其中这些分组与客户端和服务器 之间的现有连接有关。
高级健康检查
Cisco内容交换机使用主动和被动技术来监视服务器健康。通过周期性检测服务器,内容交换机将快速检测出服务器故障并能将连接快速重新 路由到可用的服务器上。高级健康检查支持大量的健康检查性能,包括认证Web服务器、SSL服务器、应用服务器、数据库、FTP服务器、流媒体 服务器及其他。
Cookie交换技术提供了灵活的会话持久性选项
如前面所讨论的,出于性能的原因,一旦在集群中的服务器上做出了初始选项,在完成事务之前必须保持同一客户端到同一服务器的连接。 这叫做"会话持久性"。内容交换机让会话cookie完好无损地从服务器发送到客户端并从客户端发送到服务器,这一点非常关键。 Cisco内容交换机也支持两类完全不同的方法来获得WebLogic集群的会话状态持久性。
主动Cookie插入
我们使用该方法配置内容交换机,以便在检测到新的会话时为每一台服务器插入唯一的cookie。然后客户端将该cookie发送回服务器,并且 内容交换机使用它来保持路由到同一台服务器的会话。 Cookie匹配
在该操作模式下,内容交换机被配置来在cookie中查找特定的字符串,该cookie指示最早设置它的服务器。这可以是会话cookie中为此目的 唯一标识的字符串或WebLogic程序员设置的不同的cookie。虽然,从编程的角度来说,这种方法更加复杂,但是它使得Web应用设计者能够更加 灵活地控制应用的行为。(注意:Cookie匹配可用于多种场合,包括动态负载分离和第三方路由。这里不具体讨论这些技巧)
Cisco内容交换机提高了站点安全性
Cisco内容交换机能够通过四种不同的方法保护WebLogic集群
访问控制列表
通过在内容交换机上构建访问控制列表,操作者可以控制谁能访问集群成员的真实地址及谁能访问交换机本身。
网络地址转换(NAT)
Cisco内容交换机执行虚拟IP地址(代表了集群到外部世界)到集群成员的真实IP地址的NAT(网络地址转换)。这允许服务器集群成员利用 专用IP地址空间进行编号。更重要的是,它隐藏了集群配置的内部细节。
拒绝服务(DoS)保护
由于Cisco内容交换机同时用到了TCP和HTTP,所以它们是在理想状态下检测并终止基于TCP和HTTP的拒绝服务攻击--即在攻击影响服务器之前 。
BEA WebLogic服务器和Cisco内容交换机的部署
防火墙负载均衡
如果应用程序产生了足够的流量来保证额外的防火墙,可以使用Cisco内容交换机均衡多个防火墙之间的负载。
SSL加速改善了性能并启用了持久性
在WebLogic服务器上运行SSL非常消耗服务器资源。Cisco SSL加速技术(在Cisco CSS 11500 内容交换机和Catalyst 6500交换机中可用)能 够卸去SSL处理,从而让服务器资源能够专门用域增值的WebLogic函数。另外,由于Cisco内容交换机使用的持久性消息存放在HTTP头中,当它 装载在SSL加密会话内部时就再也看不到了。Cisco SSL加速技术在应用内容交换决策之前终止这些会话,这使得安全站点能够使用前面讨论的所有持久性选项。 高可用性和性能选项
除了原始的交换性能,Cisco内容交换机还可用来伸缩WebLogic服务器性能和客户端到服务器连接的性能。
服务器机群分割
Cisco内容交换机能够将单个Web应用的组件分割到不同的集群成员上。例如,下面的两个URL http://www.mycompany.com/quotes/getquote.jsp 和http://www.mycompany.com/trades/order.jsp 可以位于两台不同的服务器上,虽然它们具有相同的URL。这使得应用开发人员不需要修改 多少代码就能够将应用程序应用到多台服务器上。而且,它通过将同一页面的请求保持在同一服务器上,最大化服务器的缓存一致性检查(从 而最大化了性能)。另外,可以使用Cisco内容交换机将对可缓存内容(如图像文件)的请求推到一组缓存上,该缓存比应用服务器本身具有更 高的效率。
HTTP1.1连接的重新映射
使用HTTP1.1时,客户端可能在同一TCP连接上请求多个URL。通过减少TCP连接维护的开销,可以使得客户端和服务器能够更加有效地运行。 当内容被分割并/或缓存到多个服务器上(如前一节所描述)时,必须能够通过相同的HTTP1.1连接将不同内容段的多个HTTP GET发送到不同的服务器上。客户端HTTP1.1连接必须从一台服务器"重新映射"到另一台服务器。Cisco内容交换机执行该功能以最 大化连接效率。
小结
BEA WebLogic服务器包含高级的集群功能,以便根据情况伸缩应用。Cisco内容交换机通过理解基于Web的事务的本质,并且及时地将它们路 由到最适合的服务器,最大化了BEA WebLogic服务器集群的性能、可用性和安全性。该组合解决方案带来了最大的终端用户体验。