我正在尝试使用主动/被动方法使我的应用程序高度可用。我目前将应用程序部署在 Tomcat 服务器上,该服务器可以托管在 Windows 或 Linux 平台上。
所以,现在我将它部署在两个 Tomcat 服务器上。每个服务器都在单独的机器上运行。我通过 Tomcat 配置将 Tomcat 配置为同一个集群,这给了我会话复制(存储在数据库中)。我使用一些网络服务器/负载平衡器来重定向请求(尚未决定)。
问题是应用程序不能同时在两个 Tomcat 上运行,因为它当前是有状态的(而且使其成为无状态的成本太高)。我实际上需要同时只有一个Tomcat 启动。或者,至少,Tomcat 上只会启动一个应用程序。
总而言之,我需要一个可以:
- 通过 HTTP 请求识别应用程序的无效状态(机器/Tomcat 已关闭或应用程序无响应);
- 当其他应用程序被识别为无效时,在 Tomcat 上启动 Tomcat 实例或应用程序;
- 当 Tomcat 被识别为无效时,停止 Tomcat 实例或应用程序。
- 支持Linux和Windows平台...
该产品可以是在我们的 JVM 上使用的库,它可以是驻留在 Tomcat 机器上并相互通信并与 Tomcat 通信的单独监控进程,它可以使用我们的数据库。它可能使用网络服务器机器...
我搜索了现成的产品(Pacemaker / CoroSync / keepalived),它们都不支持 Windows(据我所知)。