我们想要部署一个新版本的 EJB,但问题是有多个 EJB 和 WAR 依赖于该 EJB。因此,我们每次都必须重新启动服务器,以确保每个 EJB/WAR 都正常运行。
这里的主要困难是依赖项的数量太多,因此每次部署具有多个依赖项的 EJB 的较新版本时启用/禁用每个应用程序的工作量太大,重新启动服务器对我们来说更快、更安全。
我们正在尝试找出如何避免环境停机的方法。我们需要一直在线,而要实现这一点,重启服务器并不是一个可行的解决方案。
我们正在使用 JBoss EAP 6.3。
哪种方法适合应用于这些情况?
答案1
Radoslav Husar 解释道讨论如何以最少的停机时间解决生产环境中的部署问题。
在独立 JBoss/WildFly 上执行此操作的方法是:
- 启动新的 AS 节点,部署新版本的应用程序
- 进入
mod_cluster
管理控制台,禁用旧版本的上下文- 清除旧版本应用程序的所有会话
- 删除旧实例
如果您已经在 HA 模式下运行并且会话数据通过新旧版本的应用程序兼容:
- 从第一个集群节点耗尽会话
- 升级应用程序,带回节点
- 对所有服务器重复此操作
如果您正在运行 HA 模式但会话数据不兼容:
- 与上述相同,不同之处在于服务器被添加回具有不同负载平衡组的不同集群,以便会话数据不会发生冲突。