群集是作为一个逻辑实体一起工作的 Application Server 实例的集合。群集为一个或多个 Java EE 应用程序提供了运行时环境。高可用性群集将状态复制服务与群集和负载平衡器集成在一起。
使用群集具有以下优点:
高可用性(通过允许为群集中的服务器实例提供故障转移保护来实现)。如果一个服务器实例出现故障,其他服务器实例将接管该服务器实例正在服务的请求。
可伸缩性(通过允许向群集中添加服务器实例从而增加系统的容量来实现)。负载平衡器插件会将请求分布到群集中的可用服务器实例。当管理员向群集中添加更多服务器实例时,无需中断服务。
群集中的所有实例具有以下特性:
引用相同的配置。
具有相同的一组已部署应用程序(例如,Java EE 应用程序 EAR 文件、Web 模块 WAR 文件或 EJB JAR 文件)。
具有相同的一组资源,因此具有相同的 JNDI 名称空间。
域中的每一个群集都具有唯一的名称;此外,该名称在所有节点代理名称、服务器实例名称、群集名称和配置名称中也必须是唯一的。此名称不能为 domain。您在群集上执行的操作与在非群集服务器实例上执行的操作相同(例如,部署应用程序和创建资源)。
群集的设置源自该群集可能与其他群集共享的命名配置。其配置不能被其他服务器实例或群集所共享的群集可视为具有独立配置。默认情况下,此配置的名称为 cluster_name-config,其中 cluster_name 表示群集的名称。
能与其他群集或实例共享其配置的群集可视为具有共享配置。
群集、服务器实例、负载平衡器和会话的相互关系如下:
服务器实例不需要属于群集。但是,不属于群集的实例无法通过将会话状态从一个实例转移到其他实例来利用高可用性。
群集中的服务器实例可以由一台或多台计算机托管。您可以将不同计算机上的服务器实例组织为一个群集。
特定负载平衡器可以向多个群集中的服务器实例转发请求。您可以使用负载平衡器的此功能来执行联机升级,而不使服务受到损失。有关更多信息,请参见“配置群集”一章中的“使用多个群集进行联机升级而不使服务受到损失”。
一个群集可以从多个负载平衡器接收请求。如果群集由多个负载平衡器提供服务,则必须以完全相同的方式在每个负载平衡器上配置群集。
每个会话都依赖于特定的群集。因此,尽管您可以在多个群集上部署一个应用程序,但是会话故障转移将只能在单个群集中实现。
因此,对于群集中的服务器实例,群集充当的是会话故障转移的安全边界。在 Application Server 中,您可以使用负载平衡器和升级组件,而不使服务受到任何损失。