我们的应用程序建立在 Intersystems IRIS(以前的缓存)之上,由一个大型核心和数据库组成,该数据库通过连接到核心的几个外部模块进行了增强。
我们将 IRIS 和外部应用程序部署在同一台服务器上(出于多种原因)。当我们使用镜像时,我们有几台具有相同内容(IRIS + 外部模块)的服务器充当高可用性镜像系统,其中只有一个节点是“活动”节点,其余节点正在等待。
理想情况下,我们的外部模块在每个节点上的 IRIS 实例之后使用两个可用回调启动和停止。
在镜像中配置时,它们仅在“活动”节点上启动(通过提供的回调)并最初在所有其他节点上停止。当发生故障转移并且“等待”节点之一被提升为“活动”时,外部应用程序将在该提升节点上启动。在降级节点(从“活动”到等待、崩溃或挂起)我们没有停止这些服务的好方法,因为没有来自系统间的回调。
我们正在分析可能的替代方案,但我们将不胜感激任何其他方案以及评论:
- 实现跟踪 IRIS 实例的附加服务
- 使外部模块“镜像”感知