2

我们的应用程序建立在 Intersystems IRIS(以前的缓存)之上,由一个大型核心和数据库组成,该数据库通过连接到核心的几个外部模块进行了增强。

我们将 IRIS 和外部应用程序部署在同一台服务器上(出于多种原因)。当我们使用镜像时,我们有几台具有相同内容(IRIS + 外部模块)的服务器充当高可用性镜像系统,其中只有一个节点是“活动”节点,其余节点正在等待。

理想情况下,我们的外部模块在每个节点上的 IRIS 实例之后使用两个可用回调启动和停止。

在镜像中配置时,它们仅在“活动”节点上启动(通过提供的回调)并最初在所有其他节点上停止。当发生故障转移并且“等待”节点之一被提升为“活动”时,外部应用程序将在该提升节点上启动。在降级节点(从“活动”到等待、崩溃或挂起)我们没有停止这些服务的好方法,因为没有来自系统间的回调。

我们正在分析可能的替代方案,但我们将不胜感激任何其他方案以及评论:

  • 实现跟踪 IRIS 实例的附加服务
  • 使外部模块“镜像”感知
4

1 回答 1

1

我建议多使用一台服务器,您不需要停止/启动服务。只保留镜像,两台服务器,只为镜像,只有数据,没有运行代码,没有用户。还有一台服务器,通过 VIP 作为 ECP 连接到镜像。在这种情况下,您的所有服务都将在该服务器上运行,并且不应该关心状态更改的位置。镜像切换过程中会有短暂的停电,但没有什么致命的。我在生产中有这样的配置,但是我在镜像后面有10台服务器,其中1台只是出于互操作性的原因。我们已经有了一些开关,没有任何问题。

于 2021-10-05T07:17:10.450 回答