Sun Java System Application Server 9.1 高可用性管理指南

Application Server 如何提供高可用性

Application Server 通过以下子组件和功能提供高可用性:

负载平衡器插件

负载平衡器插件接受 HTTP/HTTPS 请求, 然后将请求转发至群集中的应用程序服务器实例。如果实例出现故障,变得不可用(由于网络故障)或无法响应,负载平衡器会将请求重定向至现有的可用计算机。负载平衡器还可识别故障实例何时恢复并相应地重新分布负载。Application Server 提供了用于 Sun Java System Web Server 和 Apache Web Server 以及 Microsoft Internet Information Server 的负载平衡器插件。

负载平衡器通过在多台物理计算机中分布工作量来提高系统的整体吞吐量。它还可通过对 HTTP 请求的故障转移提供更高的可用性。对于要保留的 HTTP 会话信息,必须配置 HTTP 会话持久性。

对于简单的无状态应用程序,负载平衡群集可能足够了。但是,对于具有会话状态的重点应用程序,请将负载平衡群集与 HADB 一起使用。

参与负载平衡的服务器实例和群集具有同构环境。通常,这意味着服务器实例均引用相同的服务器配置、可以访问相同的物理资源,以及具有部署到其上的相同的应用程序。同构环境确保了在出现故障前后,负载平衡器可以始终在群集中的活动实例之间平均分布负载。

有关配置负载平衡和故障转移的信息,请参见第 5 章,配置 HTTP 负载平衡

会话状态数据的存储

通过存储会话状态数据,可以在群集中的服务器实例故障转移后恢复会话状态。恢复会话状态可使会话继续进行而不会丢失信息。Application Server 为 HTTP 会话和有状态会话 Bean 数据提供了以下类型的高可用性存储:

群集中其他服务器上的内存中复制

其他服务器上的内存中复制提供会话状态数据的轻量存储,而无需获取单独的数据库(如 HADB)。此类型的复制可使用其他服务器上的内存来实现 HTTP 会话和有状态会话 Bean 数据的高可用性存储。群集服务器实例在环形拓扑中复制会话状态。每个备份实例均在内存中存储复制数据。通过在其他服务器上的内存中复制会话状态数据,可以分布会话。

使用内存中复制要求启用组管理服务 (Group Management Service, GMS)。有关 GMS 的更多信息,请参见组管理服务

如果群集中的服务器实例位于不同的计算机上,请确保满足以下先决条件:

高可用性数据库


注 –

HADB 软件随 Sun Java System Application Server 的 Application Server 独立分发提供。有关 Sun Java System Application Server 的可用分发的信息,请参见《Sun Java System Application Server 9.1 Installation Guide》中的“Distribution Types and Their Components”。HADB 功能仅在企业配置文件中可用。有关配置文件的信息,请参见《Sun Java System Application Server 9.1 管理指南》中的“用法配置文件”


Application Server 提供了高可用性数据库 (High Availability Database, HADB),以实现 HTTP 会话和有状态会话 Bean 数据的高可用性存储。HADB 旨在通过负载平衡、故障转移和状态恢复等功能支持高达 99.999% 的服务和数据可用性。通常,您必须独立于 Application Server 来配置和管理 HADB。

不让 Application Server 承担状态管理职责会具有很多好处。Application Server 实例在它们的周期中作为可伸缩高性能应用程序容器执行,将状态复制委托给外部高可用性状态服务。由于采用这种松散耦合的体系结构,因此可以很轻松地向群集中添加 Application Server 实例或从群集中删除 Application Server 实例。HADB 状态复制服务可以单独伸缩,以获得最佳的可用性和性能。如果 Application Server 实例同时还执行复制任务,Java EE 应用程序的性能将会降低,并会受到较长的垃圾收集暂停的限制。

有关规划和设置应用服务器安装(包括确定硬件配置、调整大小和拓扑)以通过 HADB 实现高可用性的信息,请参见《Sun Java System Application Server 9.1 部署规划指南》中的“Planning for Availability”《Sun Java System Application Server 9.1 部署规划指南》中的第 3  章 “选择拓扑”

高可用性群集

群集是作为一个逻辑实体一起工作的 Application Server 实例的集合。群集为一个或多个 Java EE 应用程序提供了运行时环境。高可用性群集将状态复制服务与群集和负载平衡器集成在一起。

使用群集具有以下优点:

群集中的所有实例具有以下特性:

域中的每一个群集都具有唯一的名称;此外,该名称在所有节点代理名称、服务器实例名称、群集名称和配置名称中也必须是唯一的。此名称不能为 domain。您在群集上执行的操作与在非群集服务器实例上执行的操作相同(例如,部署应用程序和创建资源)。

群集和配置

群集的设置源自该群集可能与其他群集共享的命名配置。其配置不能被其他服务器实例或群集所共享的群集可视为具有独立配置。默认情况下,此配置的名称为 cluster_name-config,其中 cluster_name 表示群集的名称。

能与其他群集或实例共享其配置的群集可视为具有共享配置

群集、实例、会话和负载平衡

群集、服务器实例、负载平衡器和会话的相互关系如下:

因此,对于群集中的服务器实例,群集充当的是会话故障转移的安全边界。在 Application Server 中,您可以使用负载平衡器和升级组件,而不使服务受到任何损失。