本文将讨论GlassFish Version2的集群功能,帮助您将自己的应用程序部署在GlassFish集群上。
Sun Java System Application Server 9.1是开放源码GlassFish version 2应用服务器的Sun发行版。本文使用GlassFish version 2这个名称表示这两者。
基本概念
应用服务器中的集群可增强可伸缩性和可用性,而这两者是彼此相关的。
为了提供高可用性的服务,软件系统必须具有以下功能:
系统必须能够创建并运行服务提供的实体的多个实例。在应用服务器中,服务提供的实体是在集群中运行的Java EE应用服务器实例,服务是部署的Java EE应用程序。
为了处理增加的服务负载,系统必须能够在集群中添加应用服务器实例,从而适应更大的部署。
如果集群中的一个应用服务器实例发生了故障,那么必须能够故障转移到另一个服务器实例,使服务不会中断。尽管服务器实例或物理机器的故障会使服务的总体质量有所下降,但是在高可用性环境中服务完全中断是不可接受的。
如果某个进程要修改用户会话的状态,那么会话状态必须被持久化,能够在进程重新启动之后恢复。最简单的方法是维护一个可靠的会话状态副本;如果进程终止了,那么在进程重新启动时可以恢复会话状态。这个原理与高可用性RAID存储系统的原理相似。
这些要求导致系统牺牲高效率来换取高可用性。
为了支持可伸缩性和高可用性,GlassFish应用服务器提供以下服务器端实体:
服务器实例(Server Instance) – 服务器实例是一个Java EE 服务器进程(GlassFish应用服务器),该进程运行着各种Java EE应用程序。根据Java EE规范的要求,必须针对要运行的各个子系统对每个服务器实例进行配置。
节点代理(Node Agent) – 节点代理是一个代理进程,它在运行服务器实例的每个物理主机上运行。当 本文后面 描述的Domain Administration Server(DAS)发出指示时,节点代理将管理服务器实例的生命周期。
集群(Cluster) – 集群是一个逻辑实体,它决定组成集群的服务器实例的配置。集群的配置常常意味着集群中的所有服务器实例有相同的配置。管理员通常将集群看做一个单一实体,并使用GlassFish Admin Console或命令行界面(CLI)管理集群中的服务器实例。
可以在安装GlassFish时创建节点代理、服务器实例和集群,见 本文后面的说明。集群和实例被组织成管理域(administrative domain),这由Domain Administration Server(DAS)控制。
域管理体系结构
GlassFish集群体系结构的核心概念是管理域(administrative domain)。管理域表示管理员或管理员组的访问权限。下图给出域管理体系结构的概况(只包含一个域)。
图1. 域管理体系结构