weblogic集群

      WebLogic Server 群集由多个 WebLogic Server 服务器实例组成,这些服务器实例同时运行并一起工作以提高可缩放性和可靠性。对于客户端而言,群集是一个 WebLogic Server 实例。构成群集的服务器实例可以在同一台计算机上运行,也可以位于不同的计算机上。可以通过向现有计算机上的群集中添加更多的服务器实例来增加群集的容量,也可以向群集中添加计算机以承载递增的服务器实例。群集中的每个服务器实例必须运行同一版本的 WebLogic Server。

群集与域

群集是特定 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 可使用称为“会话复制”和“可识别副本的存根控件”的技术来维护有关状态方面的信息。如果某个特定对象意外地停止进行其作业,复制技术将启用此对象的副本将拾取失败对象停止的位置,并完成作业。

  • WebLogic Server 支持自动或手动将群集服务器实例从一台计算机迁移到另一台计算机。可迁移的受管服务器被称作“可迁移服务器”。本功能适用于要求高可用性的环境。服务器迁移功能对于以下方面非常有用
    • 确保“单元集服务”的不中断可用性 - 当承载服务器实例失败时,在任何给定的时间,单元集服务必须仅在单个服务器实例上运行,例如 JMS 和 JTA 事务恢复系统。为自动迁移配置的受管服务器在失败时将被自动迁移到另一台计算机。
    • 简化重新定位受管服务器的过程以及其承载的所有服务是规划系统管理进程的一部分。管理员可以从管理控制台或命令行中启动受管服务器的迁移。

      服务器迁移过程会将整个受管服务器(包括 IP 地址和承载的应用程序)重新定位到预先定义的可用主机集中的一个。

  • 负载平衡

    负载平衡是在环境中跨计算资源与网络资源平均分发作业和关联的通信。对于即将发生的负载平衡:

    • 必须存在可以执行特定作业的对象的多个副本。
    • 有关所有对象的位置和操作状态的信息必须可用。

      WebLogic Server 允许群集对象 - 部署在多个服务器实例中,以便具有执行同一作业的备用对象。WebLogic Server 会使用多播、IP 套接口和 JNDI 共享和维护已部署对象的可用性和位置。





可以群集对象的类型



群集的应用程序或应用程序组件在群集中的多个 WebLogic Server 实例上可用。如果已群集某个对象,则此对象的故障转移和负载平衡是可用的。将对象均匀部署到群集中的每个服务器实例,可以简化群集管理、维护和故障排除。

Web 应用程序可由不同类型的对象组成,包括企业 Java Bean (EJB),servlet 和 Java Server Pages (JSP)。每种对象类型都具有唯一的一组与控制、调用以及它如何在应用程序内起作用相关的行为。由于此原因,WebLogic Server 用于支持群集的方法,以及用于提供负载平衡和故障转移的方法,会因不同的类型对象而异。可在 WebLogic Server 部署对下列类型的对象进行群集:

  • Servlet
  • JSP
  • EJB
  • 远程方法调用(Remote Method Invocation,简称 RMI)对象
  • Java 消息服务 (JMS) 目标
  • Java 数据库连接 (JDBC) 连接

不同对象类型可以具有某些共同的行为。如果是这样的话,则这些类似对象类型的群集支持和实现注意事项可能是相同的。在以下部分中,以下对象类型的解释和说明通常组合为:

  • Servlet 和 JSP
  • EJB 和 RMI 对象

下列部分简述了 WebLogic Server 为不同类型的对象提供的群集、故障转移和负载平衡支持。

Servlet 和 JSP

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 对象均匀部署到群集中的所有服务器实例。

可使用对象的可识别副本的存根控件完成 EJB 和 RMI 对象的故障转移。当客户端通过可识别副本的存根控件向失败的服务做出调用时,该存根控件可检测故障并在另一副本上重试此调用。

WebLogic Server 群集支持多种负载平衡群集 EJB 和 RMI 对象的算法:round-robin、weight-based、random、round-robin-affinity、weight-based-affinity 和 random-affinity。默认情况下,WebLogic Server 群集将使用 round-robin 方法。可使用管理控制台配置群集以使用其他方法之一。选择的方法将保留在为群集对象获取的可识别副本的存根控件中。有关详细信息。

JDBC 连接

WebLogic Server 允许您群集 JDBC 对象(包括数据源和多数据源),以提高群集承载应用程序的可用性。为群集配置的每个 JDBC 对象必须存在于群集中的每个受管服务器上 - 当配置 JDBC 对象时,会将其定位到群集。

  • 数据源 - 在群集中,外部客户端必须通过 JNDI 树上的 JDBC 数据源获得连接。数据源使用 WebLogic Server RMI 驱动程序来获取连接。如果承载先前连接的服务器实例失败,那么外部客户端应用程序中的 WebLogic 数据源的群集识别特性将请求另一个连接。尽管不是严格要求,BEA 还是建议服务器端的客户也应通过 JNDI 树中的数据源获得连接。
  • 多数据源 - 多数据源是一组数据源的提取,可提供与此多数据源相关联的各数据源之间的负载平衡或故障转移处理。就像数据源会绑定到 JNDI 树一样,多数据源会绑定到 JNDI 树或本地应用程序上下文。就像在 JNDI 树上查找数据源一样,应用程序将在 JNDI 树上查找多数据源,然后请求数据库连接。多数据源会根据在多数据源配置中选择的算法(负载平衡或故障转移)确定要使用哪一个数据源来满足该请求。

使用群集的 JDBC 获取连接

要确保任何 JDBC 请求可由任何群集成员等同处理,群集中的每个受管服务器必须具有相似命名/定义的数据源或多数据源(如果适用)。要达到此效果,应将数据源和多数据源定位到群集中,以便它们可识别群集,如果将其用于外部客户端,它们将可连接到任何群集成员。

  • 外部客户端连接 - 要求数据库连接执行 JNDI 查找,并获取数据源的可识别副本的存根控件的外部客户端。数据源存根控件包括承载数据源的服务器实例列表 - 服务器实例应该是群集中的所有受管服务器。可识别副本的存根控件包括负载平衡逻辑,用于在主机服务器实例中分发负载。
  • 服务器端客户端连接 - 对于服务器端使用,将由数据源或多数据源的本地实例处理连接请求。服务器端数据源不会由于其 JDBC 连接而转至其他群集成员。在数据库事务的持续时间内,并且只要应用程序代码保留连接(除非连接关闭),连接将被固定到本地服务器实例。

JDBC 连接的故障转移和负载平衡

群集 JDBC 对象不会启用连接的故障转移,但在连接失败时,它将简化重新连接的过程。在复制的数据库环境中,可以群集多数据源以支持数据库故障转移和连接的负载平衡(可选)。有关详细信息,请参阅下列主题:

 

JMS和群集

通过支持在群集范围内透明访问群集中任何 WebLogic Server 服务器实例中目标,WebLogic Java 消息传递服务 (JMS) 体系结构可实现多个 JMS 服务器的群集。尽管 WebLogic Server 支持通过群集分发 JMS 目标和连接工厂,但是同一 JMS 主题和队列仍由群集中的每个 WebLogic Server 实例独立管理。

JMS 支持负载平衡。要启用负载平衡,必须为 JMS 服务器配置目标。

 

 

 

不可群集类型的对象

以下 API 和外部服务不可在 WebLogic Server 内群集:

  • 包含文件共享的文件服务
  • 时间服务

在群集的各个 WebLogic Server 实例中仍可使用这些服务。但是,这些服务不能使用负载平衡或故障转移功能。

 

 

你可能感兴趣的:(IT技术)