文章
Michael Lei · 三月 6 阅读大约需 3 分钟

从 Ensemble 迁移到 IRIS for Health

我们所有的工作环境都是Ensemble 2017.2。但我们最近将迁移到IRIS for Health 2021.1版本。这是一个复杂的过程,但经过仔细考虑,我们找到了实现这一目标的方法。

我们有一个开发服务器和两个生产服务器的镜像,采用Failover模式。我们有40多个名称空间在使用中,有些有HL7集成,有些有Soap服务、Rest服务、文件处理......什么都有点。我们需要确定向IRIS的迁移不会出现问题,最重要的是,我们需要不惜一切代价避免服务中断。因此,我们必须做的第一件事是建立一个计划。

第一阶段:建立迁移程序

我们必须决定如何最好地迁移到IRIS。考虑到我们在Failover模式下有一个镜像,我们想到的第一件事是创建一个IRIS4Health实例,在这个实例上恢复一个备份并将其添加到镜像中。

为了避免生产环境的问题,我们在不同的机器上进行测试。我们创建了所有的实例,用一个简单的生产创建了一个命名空间,并开始进行备份恢复测试。我们设法在IRIS实例上恢复了Ensemble的备份,尽管这需要重新编译所有代码。但是经过几次尝试,我们发现不可能将一个Ensemble实例和一个IRIS实例进行镜像,它们不能相互识别。

所以我们采取了B计划:创建IRIS for Health的新实例,并逐一迁移我们拥有的所有产品。

第二阶段:开发环境的迁移和所有代码的测试

我们做的第一件事是迁移开发环境。要做到这一点:

  1. 我们创建一个新的机器
  2. 安装IRIS for Health
  3. 我们一个接一个地创建所有的命名空间
  4. 我们将项目从Ensemble 2017版本中导出,并将其导入并重新编译到IRIS for Health 2021版本。
  5. 我们测试了每一个被迁移的产品,以确保所有的东西都还在工作。

一旦一切都在测试环境中进行了测试,我们就准备转入生产.

第三阶段:生产环境的准备

为了迁移生产环境,我们遵循与开发环境相同的步骤:

  1. 我们创建了两个新的机器
  2. 在他们每个机器上安装IRIS for Health。
  3. 我们把它们设置为镜像,但没有分配虚拟IP
  4. 我们在两个服务器上逐一创建所有的命名空间
  5. 我们将项目从Ensemble 2017版本中导出,并在IRIS for Health 2021版本中导入并重新编译,但只在主服务器上。
  6. 我们对主节点上的所有数据库进行了备份,并在备份节点上进行了恢复。

有了这些,我们的服务器就可以在生产中运行了。

第四阶段:投入生产

这是最重要的阶段。我们有两台新机器,有新的IP。我们想避免停止业务,但也想避免协调所有与我们连接的供应商来进行通信方面的改变。所以我们想出了一个计划,能够以最少的停机时间和最小的影响投入生产:

为了清楚起见,我将把Ensemble服务器命名为ENS1为主镜像节点,ENS2为次镜像节点,而IRIS服务器IRIS1为主镜像节点,IRIS2为次镜像节点。
  1. 首先,我们关闭了ENS2服务器,只留下ENS1这个主节点提供服务。
  2. 我们从ENS2删除了IP,并把它给了新的IRIS2服务器,它是IRIS的备份节点。
  3. 我们将备份节点IRIS2转换成主节点
  4. 我们在IRIS1服务器(现在是备份节点)上停止了IRIS

在这一点上,我们已经准备好了一切,可以进行切割。我们需要释放当前镜像的虚拟IP,这样我们就可以在新的镜像中进行配置,而一切都可以继续工作。所以:

  1. 我们停止了Ensemble ENS1服务器。
  2. 我们在IRIS2服务器上的IRIS镜像中设置了虚拟IP

从这一点来看,服务已经恢复。最后的停机时间约为10分钟。一旦我们完成了IRIS实例与虚拟IP的配置,我们就开始在所有的生产中收到请求。

剩下的就是正确配置第二台服务器了:

  1. 我们给IRIS1服务器提供了ENS1服务器的IP。
  2. 我们在这个新的服务器上开始了IRIS
  3. 我们等待着IRIS1和IRIS2的同步。我们的生产服务器再次启动并运行

正如我在开始时所说,这是一条复杂的路径,但我们已经得出了一个成功的结论,我们现在在所有的环境中都有IRIS,这必将为我们提供巨大的利益和新的挑战以克服.

1
0 11
讨论 (0)1
登录或注册以继续