WebLogic Server Clustering 介绍

  • 格式:pdf
  • 大小:36.24 KB
  • 文档页数:8

WebLogic Server Clustering 介绍 本文简要介绍了 WebLogic Server 集群(Cluster). 主要包括以下内容: Ø 什么是WebLogic Server Cluster? Ø 集群与域的关系 Ø 使用集群的意义 Ø 集群的主要特性 Ø 支持集群的对象类型 Ø 不支持集群的对象类型 Ø WebLogic Server 7.0 集群的新特性 什么是WebLogic Server Cluster? WebLogic Server 集群(Cluster) 让你可以同时发布一个应用程序的多个镜像(拷贝),却仍可作为一个实例来引用,它们同时运行、协同工作以提高整个应用系统的可伸缩性与可靠性。

从客户端的角度来看,一个集群只表现为一个独立的WebLogic Server实例。

这些组成集群的实例可以是运行在同一台机器上,也可以是在不同的机器上。

你可以在一台已有的机器上启动新的服务实例来提升集群的性能,也可以增加新的机器加入集群来提升性能。

但有一点,每一个服务实例都必须运行同样版本的WebLogic Server。

  集群与域的关系 一个集群是WebLogic Server的某个特定域(Domain)的一部分。

 域是一系列相关的WebLogic Server资源的集合,它们可以被统一管理。

一个域包括一个或多个WebLogic Server实例,这个服务器实例可以是被集群化的、未被集群化的,也可以是一个被集群化的实例与未被集群化的实例的联合。

一个域可以包括多个集群。

一个域也可以包括发布在这个域里的应用程序组件、这些组件所需要的资源和服务,以及这个域里的服务实例。

例如,所用的计算机、可选的网络频道、连接器和启动类等等。

 你可以使用不同的标准去组织域里的WebLogic Server实例。

例如,当选择资源分配给多个域的时候,可以考虑基于应用程序的逻辑区分,也可以基于物理位置的不同,或者是考虑这个域所管理的资源的数目与复杂度等等因素。

要获得关于域的更多信息,请参阅 创建与配置WebLogic Server域。

 每个域里都有一个WebLogic Server实例被作为管理服务器-这个服务器实例负责配置、管理和监视同一个域里的其它服务器实例和资源。

每一个管理服务器只能管理一个域。

如果一个域包括多个集群,每个集群则共享同一个管理服务器。

 在一个集群里的全部服务器实例必须是在同一个域里。

不能“分隔”一个集群以跨越不同的域,同样,也不能在不同的域里共享一个配置资源或子系统。

例如,如果在一个域里创建了一个JDBC连接池,就不能够被另一个域里的服务器实例或集群使用。

(但是,你可以在第二个域里创建同样的一个连接池) 集群化的WebLogic服务器实例与未被集群化的服务器实例在行为上是基本一样的,除了前者同时还能提供Failover和负载均衡服务以外。

那些用于配置WebLogic集群的程序和工具与配置普通的WebLogic服务器的也是一样的。

然而,为了实现Failover和负载均衡,你需要一些针对集群的特别的配置。

 要理解WebLogic是如何实现Failover和负载均衡的机制以及特别的配置方法,请参考 集群里的负载均衡, 和 集群里的Failover和Replication。

 更为详细的配置建议和指导可以参考配置WebLogic集群。

  使用集群的意义 WebLogic的集群提供了以下好处: § 可伸缩性(Scalability) 发布在WebLogic集群中的应用程序的容量可以根据需要动态增加。

可以增加新的服务器实例而无需停止正在运行的应用程序-对客户和终端用户毫无影响。

 § 高性能(High-Availability) 在WebLogic集群中,应用程序能够在其中一个服务器因为错误而停止后仍继续运行。

“集群化”的应用程序组件被发布在多个“集群化”的服务器实例中,如果其中一个因为错误而停止,其它服务器上的组件可以继续进行,应用程序不会停止。

 WebLogic集群是如何选择一个服务器实例的机制对于应用程序开发者和客户而言是完全透明的。

然而,理解一些技术上的架构,将有助于程序员和系统管理员更大程度地发挥应用程序的伸缩性和高效性。

  WebLogic集群的主要特性 本节定义了一些非技术术语,WebLogic集群实现可伸缩性和高效性的关键的几个性能。

 § Failover 简单地说,Failover意味着当一个应用程序组件(在下面的小节中最典型的例子是一个对象)正在做一件特别的工作(一些任务集)的时候,其中一个对象的拷贝因为不可预见的错误而停止(它结束了自己的工作)。

 这时,一个新的对象将立刻接过它的工作: • 个对象停止工作了,它必须存在一个有效拷贝才能接管它的工作。

• 对于其它的对象和管理Failover的程序来说,它们需要共享这么一个信息,它定义了全部对象的位置和运行状态。

这样才有可能知道某个对象在完成它的任务之前就因为错误而停止了。

 • 同样也要有一个信息被共享,它定义了当前工作的进度。

这样才能让那个接管中断任务的对象知道从哪里开始继续工作。

比如,多少数据已被改变或哪个步骤已完成等等。

WebLogic Server 使用标准的通信技术在集群的对象中共享和维护有效的信息,包括:组播、套接字和JNDI接口。

WebLogic Server依靠这些技术来判断并且定位是哪个对象在完成任务前中断了。

 这里的信息被称作状态(state)。

WebLogic Server 维护状态信息的技术是会话镜像(session replication)和replica-aware stubs.当某个对象因为意外而停止了它的工作,镜像技术能迅速选择它的一个拷贝来继续完成这个工作。

 § Load Balancing 负载均衡(Load balancing)也是一种在多个计算机或网络资源下的分布式的任务和协同通信。

当系统处于负载均衡时: • 存在有多个对象拷贝能完成同一个工作。

• 在全部对象实例中共享记录了它们的位置和运行状态的信息。

WebLogic Server 可以发布一个对象在多个服务器实例集群上,这样它们可以被选择用来完成同一项工作。

WebLogic Server 也是用组播、套接字和JNDI技术来共享和维护信息(记录着全部对象的有效性和位置、状态)。

 关于通信和Replication技术的详细的讨论,请参考 集群的通信  支持集群的对象类型 一个集群的应用程序或应用程序组件分布在一个集群里的多个WebLogic服务器实例上。

如果一个对象被发布成集群,它就具有Failover和负载均衡的特性。

最简单地集群管理和维护方法是重复地发布同一个对象到集群中的每一个服务器实例上。

 Web应用是由不同类型的对象组成,包括EJB、servlets和JSPs。

每个对象都有自己的行为,如控制器、调用,以及在应用程序中具有什么功能等。

因此,WebLogic Server对不同类型的对象采用不同的方法来支持集群技术以提供负载均衡和Failover。

在WebLogic Server中支持以下类型对象的集群: § Servlets§ JSPs§ EJBs§ 远程方法调用对象(RMI)§ Java消息服务目标(JMS) § JDBC连接 各种对象类型有一些公共的行为,在这种情况下,类似的对象类型在集群的支持和实现方面是相同的。

本节下面将重点说明通常的几种对象类型组合: § Servlets和JSPs § EJBs和RMI对象 本节简要描述了WebLogic对不同对象类型提供的集群技术、Failover和负载均衡的支持。

 Servlets和JSPs WebLogic Server提供了对Servlets和JSPs的集群支持,通过复制客户端访问集群的Servlets和 JSPs的HTTP会话状态。

WebLogic Server 能够以内存、文件或数据库三种方式维护会话状态信息。

 要自动实现Servlets和JSPs的Failover,会话状态必须是在内存中被持久化。

要获得更多的关于Servlets和JSPs的Failover的参考信息,以及其它相关资料,请参阅 HTTP会话状态的复制. 可以通过使用WebLogic提供的代理插件(Proxy Plug-in)来实现Servlets和JSPs的负载均衡,也可以通过一个外部的负载均衡硬件设备来实现。

WebLogic Server 代理插件实现了轮询式负载均衡(round robin load balancing). 而外部设备则可以支持多种不同的负载均衡机制。

要获得更多的Servlets和JSPs的负载均衡资料,请参阅 Servlets和JSPs的负载均衡。

 EJBs和RMI对象 负载均衡和Failover对于EJBs和RMI对象的实现机制是使用了有意复制(replica-aware)代码存根, 它能够在集群中定位一个对象实例。

创建EJBs和RMI对象的Replica-aware代码存根是通过编译过程实现的。

同样也要均一地发布EJBs和RMI对象到集群中的每一个节点上。

 EJBs和RMI对象的Failover也是由对象的replica-aware代码存根实现的。

当客户端通过Replica-aware代码存根创建一个对服务的调用失败了,这个存根可以检测到失败并重新尝试对其它复制对象的调用。

关于不同类型的Failover支持,请参阅EJBs和RMIs对象的Replication/Failover. WebLogic Server集群支持EJBs和RMI对象负载均衡的多种不同算法: Round-Robin, weight-based,以及随机算法。

缺省地,WebLogic Server集群使用Round-Robin方式实现。

可以通过管理员控制台更改其它的算法实现,所选择的算法也决定了Replica-aware代码存根的生成。

更多细节可参阅EJBs和RMI对象的负载均衡. JDBC连接 WebLogic Server 支持JDBC对象的集群,包括数据源、连接池和复合连接池(multipools)等,以此提高了集群化的应用程序的性能。

每个集群的JDBC对象也必须存在集群中的每一个节点上,可以在配置JDBC时选择它们的目标(Target)为Cluster。

 § 数据源-当外部的客户端程序要从一个集群的数据源(Data Sources)获取连接时,它使用WebLogic Server的RMI驱动来请求连接。