Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

第 1 章 Application Server 高可用性功能

本章介绍了 Sun Java SystemApplication Server Enterprise Edition 中的高可用性功能,包括以下主题:

高可用性概述

无论硬件和软件故障,高可用性应用程序和服务均可持续提供其正常功能。Application Server 提供了 HTTP 请求和会话数据(HTTP 会话数据和有状态会话 Bean 数据)的高可用性。

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

负载平衡器插件

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

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

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

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

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

高可用性数据库

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

Application Server 不承担状态管理职责,这有很大的优势。Application Server 实例在其生命周期内作为可伸缩和高性能的 Java™ 2 Platform, Enterprise Edition(J2EE™ 平台)容器运行,并将状态复制委托给外部高可用性状态服务。由于采用这种松散耦合的体系结构,因此可以非常轻松地向群集中添加应用服务器实例或从群集中删除应用服务器实例。HADB 状态复制服务可以单独伸缩,以获得最佳的可用性和性能。如果应用服务器实例同时还执行复制任务,J2EE 应用程序的性能将会降低,并会受到较长的垃圾收集暂停的限制。

有关规划和设置应用程序服务器安装(包括确定硬件配置、大小和拓扑)以通过 HADB 实现高可用性的信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide》中的“Planning for Availability”《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide》中的第 3  章 “Selecting a Topology”

高可用性群集

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

使用群集具有以下优点:

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

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

群集和配置

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

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

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

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

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

更多信息

有关规划高可用性部署(包括评估硬件需求、规划网络配置和选择拓扑)的信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide》。本手册还对以下概念进行了高层次的介绍:

有关开发和部署利用高可用性功能的应用程序的更多信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide》

调优高可用性服务器和应用程序

有关如何配置和调优应用程序和 Application Server 以获得高可用性的最佳性能的信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Performance Tuning Guide》,其中包括以下主题:

高可用性会话持久性

J2EE 应用程序通常具有大量会话状态数据。Web 购物车是会话状态的一个典型示例。此外,应用程序可以高速缓存会话对象中需要频繁使用的数据。事实上,几乎带有重要用户交互的所有应用程序都需要维护会话状态。HTTP 会话和有状态会话 Bean (stateful session bean, SFSB) 都具有会话状态数据。

保留故障服务器之间的会话状态对最终用户非常重要。为了获得高可用性,Application Server 提供了在 HADB 中保留会话状态的功能。如果托管用户会话的应用程序服务器实例出现故障,则可以恢复会话状态,并且会话可以继续进行而不会丢失信息。

有关如何设置高可用性会话持久性的详细说明,请参见第 8 章,配置高可用性会话持久性和故障转移