在集群环境中,滚动升级能够以服务和会话损失最少的方式重新部署应用程序。会话是可复制的任何 Artifact,例如:
HttpSession
SingleSignOn
ServletTimer
DialogFragment
有状态会话 Bean
可以使用负载平衡器和多个集群来升级 GlassFish Server 中的组件,而不损失任何服务。例如,组件可以是 JVM 计算机、GlassFish Server 软件或 Web 应用程序。
滚动升级可在轻度到中度负载下进行。对于每个 GlassFish Server 实例,该过程需要大约 10-15 分钟。
升级过程中,应用程序必须兼容。在某些实例运行旧版本而其他实例运行新版本的过渡期间,应用程序必须能够正常工作。旧版本和新版本必须具有相同形状的可序列化类,用于形成存储于会话中的对象图,例如非瞬态实例变量。如果这些类的形状必须发生变化,应用程序开发人员必须确保所进行的序列化行为是正确的。如果升级过程中应用程序不兼容,必须停止集群以进行完全重新部署。
如果应用程序升级包含对应用程序数据库方案的更改,则这种方法不可能实现。
注意:
为防范会话故障转移时的版本不匹配风险,请同时升级集群中的所有实例。否则,会话可能故障转移至运行不同版本组件的实例。请在每个集群上单独执行此任务。对于集群中的实例,集群可作为会话故障转移的安全边界。一个集群中的会话永远都无法故障转移至另一个集群中的会话。因此,版本不匹配的风险可得以避免。