GlassFish由一个或多个domain组成,一个domain是一个管理域,每个domain和一个administration server(也称作Domain Administration server或者DAS)关联,并可包含0到多个standalone instance或者cluster。每个cluster有一个或多个同类型的instance,一个instance运行于一个单独的JVM中,domain中的instance可运行在不同的物理机器上。
下面介绍一下GlassFish中的组件构成:
Server Instance
一个server instance运行在一个单独的JVM中,instance可分为两种:standalong和cluster。DAS就是一个standalong的instance,可以完全不依赖cluster而存在。对于cluster的instance,可以对应到weblogic中的managed server,我们也称作traffic server。
Administrative Domain
Glassfish中可以创建多个domain,一个domain管理一组server instance,一个instance属于一个单独的domain,domain中的instance可运行在不同的物理机器中。每个domain都有一套自己的配置、日志文件和部署区域,改变其中一个domain的配置不会影响到其它的domain。
Domain Administration Server(DAS)
一个domain有一个DAS,DAS是一个特别的server instance,它可以:验证管理员、接收来自于管理工具的请求、与domain中的instance进行通讯。DAS通常叫做admin server或者default server,把它称作default server是因为它是一个管理操作的默认目标。DAS中有一个仓库保存domain的配置和部署的应用,如果DAS宕机了,不会影响其它instance的运行,但是不能对管理的配置进行修改了,这时你需要创建一个新的DAS去restore之前的配置。
Cluster
一个cluster表示一组server instance,cluster内可以共享相同的应用、资源和配置信息。cluster可以包含不同物理机器上的instance,通过DAS可以很容易的对多机上的cluster的生命周期进行管理。Cluster能够让你很容易的处理水平扩展、负载均衡和宕机保护等问题。因为cluster中所有的instance都拥有相同的资源和应用配置,当一个instance或机器宕了,load balancer可以发现失败,并将traffic从失败的instance上重定向到cluster中的其它可用的instance,并回复session的状态。
Cluster、domain和instance之间的关系如下:
- 一个domain可以有0到多个cluster。
- 一个cluster可以有一到多个server instance。
- 一个cluster属于一个单独的domain。
Node Agent
Node agent运行在每个server instance的机器中,包括运行DAS的机器。node agent的作用是:
- 根据DAS的指示去启动和停止instance。
- 重启失败的instance。
- 提供失败的server的log,以帮助远程诊断。
- 同步每个server instance的本地配置仓库和DAS的中央仓库。
- 当创建了一个新的instance时,它会创建instance所需的目录,并同步DAS的中央仓库到instance的本地仓库。
- 当删除instance时执行适当的清理。
每个物理机器至少需要一个node agent,如果一台机器中的instance属于多个domain,则每个domain都需要一个node agent,这种方式不推荐。因为node agent要监控server instance,所以node agnet必须要一直运行。
理解了GlassFish中各个组件的作用,在企业级环境部署时,就可以比较容易的搭建相应的服务器架构,以使应用程序得到最优的运行方式。