群集是特定 WebLogic Server 域的一部分。
域是作为单元进行管理的一组相关的 WebLogic Server 资源。一个域包含一个或多个 WebLogic Server 实例,这些实例可以是群集实例、非群集实例,或者是群集与非群集实例的组合。一个域可以包含多个群集。域还包含部署在域中的应用程序组件、此域中的这些应用程序组件和服务器实例所需的资源和服务。应用程序和服务器实例使用的资源和服务示例包括计算机定义、可选网络通道、连接器和启动类。
可以使用各种条件将 WebLogic Server 实例组织到域中。例如,可以选择根据承载的应用程序的逻辑分区、地理方面的考虑或管理的资源的数目或复杂性将资源分配到多个域中。
在每个域中,一个 WebLogic Server 实例可充当管理服务器 - 此服务器实例可配置、管理和监视域中所有其他服务器实例和资源。每个管理服务器只管理一个域。如果一个域中包含多个群集,则域中的每个群集都具有相同的管理服务器。
群集中的所有的服务器实例必须驻留在同一域中;不能将群集“拆分”到多个域中。同样,不能在域之间共享配置的资源或子系统。例如,如果在一个域中创建了 JDBC 连接缓冲池,则不能将其用于另一个域中的服务器实例或群集。(而是必须在另一个域中创建类似的连接缓冲池。)
群集的 WebLogic Server 实例除提供故障转移和负载平衡外,其他行为与非群集的实例相似。配置群集的 WebLogic Server 实例所使用的过程和工具与配置非群集的 WebLogic Server 实例所使用的过程和工具相同。但是,为了获得群集启用的负载平衡和故障转移优点,必须符合群集配置的某些准则。
WebLogic Server 群集提供了以下这些优点:
可以动态增加部署在 WebLogic Server 群集中的应用程序的容量以满足需要。可以将服务器实例添加到群集中而不会中断服务 - 应用程序将继续运行而不会影响客户端和最终用户。
在 WebLogic Server 群集中,当服务器实例失败时应用程序可继续进行处理。可通过将应用程序组件部署到群集中的多个服务器实例“群集”这些组件 - 这样,如果在其上运行某个组件的服务器实例失败,则将此组件部署到的其他服务器实例可以继续进行应用程序处理。
群集 WebLogic Server 实例的选择对于应用程序开发人员和客户端是透明的。但是,了解启用群集的技术基础结构将有助于编程人员和管理员最大化其应用程序的可伸缩性和可用性。
本部分采用非技术术语定义了启用可伸缩性和高可用性的关键群集功能。
简单的说,故障转移是当应用程序组件(在下列部分中通常称作“对象”)正在处理某个特定作业时 - 某些处理任务部分由于任何原因而变得不可用,已失败对象的副本将结束此作业。
对于能够接管失败对象的新对象:
WebLogic Server 使用基于标准的通信技术和工具 - 多播、IP 套接口、以及 Java 命名和目录接口 (JNDI) 来共享和维护群集中有关对象可用性的信息。这些技术允许 WebLogic Server 确定某个对象在结束其作业之前已停止,以及用于完成已中断作业的对象副本的位置。
有关已对作业所进行的操作的信息被称作状态。WebLogic Server 可使用称为“会话复制”和“可识别副本的存根控件”的技术来维护有关状态方面的信息。如果某个特定对象意外地停止进行其作业,复制技术将启用此对象的副本将拾取失败对象停止的位置,并完成作业。
服务器迁移过程会将整个受管服务器(包括 IP 地址和承载的应用程序)重新定位到预先定义的可用主机集中的一个。
负载平衡是在环境中跨计算资源与网络资源平均分发作业和关联的通信。对于即将发生的负载平衡:
WebLogic Server 允许群集对象 - 部署在多个服务器实例中,以便具有执行同一作业的备用对象。WebLogic Server 会使用多播、IP 套接口和 JNDI 共享和维护已部署对象的可用性和位置。
群集的应用程序或应用程序组件在群集中的多个 WebLogic Server 实例上可用。如果已群集某个对象,则此对象的故障转移和负载平衡是可用的。将对象均匀部署到群集中的每个服务器实例,可以简化群集管理、维护和故障排除。
Web 应用程序可由不同类型的对象组成,包括企业 Java Bean (EJB),servlet 和 Java Server Pages (JSP)。每种对象类型都具有唯一的一组与控制、调用以及它如何在应用程序内起作用相关的行为。由于此原因,WebLogic Server 用于支持群集的方法,以及用于提供负载平衡和故障转移的方法,会因不同的类型对象而异。可在 WebLogic Server 部署对下列类型的对象进行群集:
不同对象类型可以具有某些共同的行为。如果是这样的话,则这些类似对象类型的群集支持和实现注意事项可能是相同的。在以下部分中,以下对象类型的解释和说明通常组合为:
下列部分简述了 WebLogic Server 为不同类型的对象提供的群集、故障转移和负载平衡支持。
WebLogic Server 通过复制访问群集 servlet 和 JSP 的客户端的 HTTP 会话状态,为 servlet 和 JSP 提供了群集支持。WebLogic Server 可在内存、文件系统或数据库中维护 HTTP 会话状态。
要启用 servlet 和 JSP 的自动故障转移,会话状态必须持久保存在内存中。有关 servlet 和 JSP 的故障转移的工作方式信息,以及相关要求和编程注意事项。
可使用 WebLogic Server 代理插件或外部负载平衡硬件在群集中平衡 servlet 和 JSP 的负载。WebLogic Server 代理插件可执行循环法负载平衡。外部负载平衡器通常支持各种会话负载平衡机制。
可使用“可识别副本的存根控件”(可在群集中定位对象实例)处理 EJB 和 RMI 对象的负载平衡和故障转移。为 EJB 和 RMI 对象创建可识别副本的存根控件是对象编译过程所产生的结果。会将 EJB 和 RMI 对象均匀部署到群集中的所有服务器实例。
可使用对象的可识别副本的存根控件完成 EJB 和 RMI 对象的故障转移。当客户端通过可识别副本的存根控件向失败的服务做出调用时,该存根控件可检测故障并在另一副本上重试此调用。
WebLogic Server 群集支持多种负载平衡群集 EJB 和 RMI 对象的算法:round-robin、weight-based、random、round-robin-affinity、weight-based-affinity 和 random-affinity。默认情况下,WebLogic Server 群集将使用 round-robin 方法。可使用管理控制台配置群集以使用其他方法之一。选择的方法将保留在为群集对象获取的可识别副本的存根控件中。有关详细信息。
WebLogic Server 允许您群集 JDBC 对象(包括数据源和多数据源),以提高群集承载应用程序的可用性。为群集配置的每个 JDBC 对象必须存在于群集中的每个受管服务器上 - 当配置 JDBC 对象时,会将其定位到群集。
要确保任何 JDBC 请求可由任何群集成员等同处理,群集中的每个受管服务器必须具有相似命名/定义的数据源或多数据源(如果适用)。要达到此效果,应将数据源和多数据源定位到群集中,以便它们可识别群集,如果将其用于外部客户端,它们将可连接到任何群集成员。
群集 JDBC 对象不会启用连接的故障转移,但在连接失败时,它将简化重新连接的过程。在复制的数据库环境中,可以群集多数据源以支持数据库故障转移和连接的负载平衡(可选)。有关详细信息,请参阅下列主题:
通过支持在群集范围内透明访问群集中任何 WebLogic Server 服务器实例中目标,WebLogic Java 消息传递服务 (JMS) 体系结构可实现多个 JMS 服务器的群集。尽管 WebLogic Server 支持通过群集分发 JMS 目标和连接工厂,但是同一 JMS 主题和队列仍由群集中的每个 WebLogic Server 实例独立管理。
JMS 支持负载平衡。要启用负载平衡,必须为 JMS 服务器配置目标。
以下 API 和外部服务不可在 WebLogic Server 内群集:
在群集的各个 WebLogic Server 实例中仍可使用这些服务。但是,这些服务不能使用负载平衡或故障转移功能。