如何以最少的停机时间迁移多个 Apache Rails 应用程序

如何以最少的停机时间迁移多个 Apache Rails 应用程序

我有一台服务器,上面托管着大约 80 个小型 Rails 应用程序。我们最近升级了磁盘空间,所以现在我们必须将所有站点移到这个新磁盘。主机是 VMware ESX 服务器,因此所有磁盘都是虚拟的。

我们为每个文件都设置了一个虚拟主机和 apache 配置文件。在这个文件中,我们定义了开发、测试、验收和生产环境,每个环境都有自己的域。生产环境可以有多个域。网站目前位于“/”分区上的目录中(我知道这不是一个好主意),需要移动到新的分区。网站运行 Sqlite 数据库,因此也必须复制它。

我们想将这些网站移至其他磁盘。最简单的方法是关闭 Apache,复制文件,然后将磁盘重新安装到旧位置。这会导致大量停机时间,因为需要复制大约 100GB 的数据。

有没有办法将新磁盘与旧文件同步,然后“立即”交换它们?或者也许自动逐个移动网站,以最大限度地减少每个网站的停机时间?我最担心的是如果在操作过程中写入 Sqlite 数据库,则会损坏它们。

答案1

两种解决方案:

  • 如果您的文件系统允许,您可以制作快照并将其解压到新磁盘上。XFS 允许这样做(可能还有 JFS,我不知道)。如果您愿意,您可以在之后将分区扩展到新磁盘的大小。

  • 您可以先用普通的 cp 命令将所有内容复制到磁盘并激活旧磁盘。当您准备切换时,请关闭 apache。将旧磁盘 rsync 到新磁盘,如下所示:

    rsync -Cavz --delete <OLDDISKPATH> <NEWDISKPATH>
    umount <OLDDISKPATH>
    mount --move <NEWDISKPATH> <OLDDISKPATH>
    

    然后启动 apache,您就以最少的停机时间完成了工作。

相关内容