如何将 Mdadm RAID 驱动器(基于 EBS)移动到不同的 AWS 实例

如何将 Mdadm RAID 驱动器(基于 EBS)移动到不同的 AWS 实例

我们有一个托管在 AWS 上的富媒体 Web 应用程序。我们有多个 Web 服务器和一个 NFS 服务器。

在 NFS 服务器(Linux 服务器)上,我们挂载了多个 EBS 卷,并使用 mdadm 将不同的挂载卷实现为单个 RAID 卷。Web 服务器只需通过挂载点访问 NFS 存储即可。

亚马逊现已通知我们,他们将在几天内对该服务器进行电源维护。由于我们所有的媒体都在这里,因此在亚马逊进行维护的几个小时内,我们的网站将无法使用。我们希望尽力避免这种停机。

我在想,我们可以通过临时设置一个新服务器并将 EBS 驱动器(raid 卷)连接到该服务器并让我们的 Web 服务器在维护期间指向那里来防止服务器停机。

这是一个高风险的操作,因为这涉及到我们几 TB 的生产数据。

将我们的逻辑 raid 驱动器 (md0) 移至新的 amazon 实例的安全方法是什么?我希望可以先构建新服务器,安装 ebs 卷,然后使用 mdadm --assemble --scan 组装 RAID 分区,然后再从现有实例卸载,以便我可以先测试一切是否正常,然后将其安装在两个实例上同时,但我不相信文件系统的工作方式可以做到这一点。

如何将 Linux 软件 RAID 移动到新机器?建议移动驱动器的方法,但这并不是一个基于云的问题。也许有更简单的方法可以防止系统停机,因为我们的解决方案托管在云上?我考虑过拍摄 EBS 快照,但这会尝试复制所有已安装的数 TB 存储,因此这不是一个实用的解决方案。

有任何想法吗?

答案1

您只能将 EBS 设备附加到单个实例,因此在移动时必须将其分离。我假设您想避免数据密集型过程,例如创建 EBS 快照或将数据 rsyncing 到新实例。我还假设您正在使用 RAID1。

最安全的选项将需要几分钟的停机时间。您将启动一个新实例,并安装和配置必要的软件(例如 NFS 服务器)。然后在旧实例上,卸载文件系统,停止阵列并分离两个 EBS 设备。然后将 EBS 设备连接到新实例,启动阵列并安装文件系统。让 Web 服务器从新实例安装 NFS。启动阵列应该只是运行mdadm您描述的命令,但我肯定会先测试一下。

第二种选择可能停机时间较短(假设您可以在只读模式下运行一段时间),但更危险。您可以按上述方法启动新实例。在旧实例上,以只读模式重新挂载文件系统。然后使其中一个 RAID 设备发生故障,分离此 EBS 设备并将其连接到新实例。在新实例上以降级模式启动阵列,挂载文件系统,并让 Web 服务器从新实例挂载 NFS(此阶段站点应该完全可用)。然后在旧实例上停止阵列,分离 EBS 设备并将其连接到新实例,然后将其添加到阵列。但这可能会触发完全重新同步,因此再次先测试这一点。

无论你做什么,一定要先测试该过程,以便你确切知道如何执行,并确保你有备份,以防万一出现严重错误。(此外,考虑将你的媒体存储在 S3 上。)

答案2

我刚刚意识到:手动创建新实例并手动移动 RAID 驱动器是没有必要的。

由于实例基于 EBS,并且组成 raid 卷的驱动器也基于 EBS,因此我只需停止 ebs 映像,然后重新启动即可。这会将其迁移到新硬件。

这是迄今为止最简单的方法。由于服务器现在将收到一个新的 IP 地址,我只需更新 Web 服务器上的 fstab 以指向正确的服务器即可。

相关内容