如何实现外部应用与Intersystems镜像的IRIS实例状态同步
Intersystems IRIS镜像集群外部模块启停方案需求
场景背景
我们的应用基于Intersystems IRIS(前身为Cache)搭建,包含大型核心模块与数据库,另有多个对接核心的外部模块对其功能做扩展。
出于多方面考量,我们将IRIS与外部应用本地部署在同一服务器上。启用*mirror(镜像)功能时,多台内容完全一致(部署IRIS+外部模块)的服务器组成高可用镜像集群,集群仅一个节点为active(活跃)*节点,其余节点处于待命状态。
理想情况下,各节点的外部模块可通过两个可用回调,跟随对应节点的IRIS实例启停。
当前遇到的问题
完成镜像配置后,外部模块仅会在活跃节点通过系统提供的callback(回调)启动,其余节点的外部模块初始均为停止状态。当发生failover(故障转移)、某一待命节点被提升为活跃节点时,该节点的外部应用会随之启动。但对于被降级的节点(从活跃状态切换为待命、崩溃或挂起的节点),由于Intersystems没有提供对应回调,我们暂无完善方案停止这些节点上的外部服务。
已调研的备选方向
我们目前正在调研可行的替代方案,也十分欢迎大家提供其他方案或相关建议,目前已考虑的方向如下:
- 额外搭建一个监控IRIS实例运行状态的服务
- 对外部模块进行改造,使其具备mirror感知能力
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

