使用共享磁盘通过故障转移配置单一安装 Apache Karaf

Single install Apache Karaf with failover configuration using shared disk

我希望为 Karaf 实施故障转移 (master/slave)。我们目前的 服务器设置有两个应用程序服务器,它们有一个共享的 SAN 磁盘,其中 我们当前的 Java 应用程序安装在一个位置,并且可以 在一台机器上或同时在两台机器上启动。

我希望以类似的方式实现 Karaf master/slave 故障转移 (两个应用程序服务器共享一个安装),但是我不确定 这真是一条人迹罕至的道路,希望能得到一些建议 替代方案(如下所述)是否明显更好。

故障转移的当前想法: 在共享 SAN 上安装一次 Karaf 并在此设置基本文件锁定 共享磁盘。 两台应用服务器都会有效地启动 Karaf 启动脚本, 但是只有一个(第一个)会完全启动(获取锁)并且 second 将保持待命状态,直到它抓住锁(如果 master 倒下 超过)

我从中看到的主要好处是我只需要管理 将组件部署到一个 Karaf 安装,我只需要管理 一个 Karaf 安装。

备选方案: 我们将 Karaf 安装在共享 SAN 上的两个不同位置并设置为 锁到同一个锁文件。 每个应用服务器都会有自己的Karaf实例,从而启动 运行.

的脚本

这会使我们的部署稍微复杂一些 (2 Karaf 要管理和部署到的安装)。

如果有人能指出他们的任何具体问题,我会很感兴趣 有现在的想法。

注意:我知道 Karaf-cellar 可以简化我的 Karaf 实例 管理,但是我们需要进行另一轮 PoC 等。 批准我们公司使用地窖(作为单独的产品)。某物 我想在未来迁移到。

看看 documentation

这来自关于如何为 HA 设置锁定文件的文档:

karaf.lock=true
karaf.lock.class=org.apache.karaf.main.lock.SimpleFileLock
karaf.lock.dir=<PathToLockFileDirectory>
karaf.lock.delay=10000

从那里可以看出,您还可以为捆绑包 start-levels 设置启动或不启动的级别:

karaf.lock.level=50