【问题标题】:Syncing remote folders from several machines to one AWS instance将多台机器上的远程文件夹同步到一个 AWS 实例
【发布时间】:2020-12-12 14:34:53
【问题描述】:

我有 3 个 AWS P 实例处理一些繁重的东西并将结果保存到相关的/home/user/folder
另外,我有一个主服务器,它的文件夹与我想从这 3 个实例中收集结果的文件夹相同
每个实例都在整个任务的自己的部分工作,它们的结果是子文件夹不重叠

每个实例都是 2 TB,所以我想在每个实例出现时立即获得结果
这样当它的工作完成后,我不会花半天时间将结果复制到主服务器

我认为解决这个问题的一种方法是在每个实例上运行类似的东西:

*/30 * * * * rsync /home/user/folder ubuntu@1.1.1.1:/home/user/folder

鉴于所有实例都是 AWS,还有其他更聪明的方法可以实现相同的结果吗?
我还考虑过 (1) 可分离存储和 (2) 存储在 S3 上,但对于 AWS,我可能会忽略此类工作流程中的一些隐藏陷阱,尤其是涉及 TB 级数据和昂贵的实例时。

您如何从远程实例收集处理过的数据?

【问题讨论】:

  • 您希望如何与数据交互?你想要文件系统语义吗? S3 并没有真正提供它们,但有其自身的优势(大规模并行访问和范围操作)。如果您“只想要一个共享文件系统”,我过去在 EFS 上运气不错,尽管与 EBS 或 S3 相比它相当昂贵。
  • @DanielFarrell 哦,这很有趣,谢谢,我只需要它符合 POSIX,我将根据新获得的数据重新训练我的模型

标签: amazon-web-services amazon-s3 amazon-ec2 cron rsync


【解决方案1】:

我会考虑使用 rclone 工具,该工具可以轻松配置为共享 S3 存储桶。请注意复制/同步模式。根据您的实例类型,它可以丰富多达几千兆的吞吐量。

项目链接:rclone.org

【讨论】:

    【解决方案2】:

    我对OP和cmets中提到的一些选项的想法,以及我想到的其他一些选项:

    1. EFS:创建 EFS 并将其作为 NFS 驱动器安装在所有实例上。这是最简单的,但可能成本最高。
    2. s3fs:让所有实例使用 s3fs 挂载同一个 S3 存储桶。这可能是最便宜的解决方案。您也不必担心磁盘空间不足。缺点是与挂载的 NFS 驱动器相比,性能不会那么好。
    3. EBS 卷:将一个 EBS 卷附加到每个工作实例,以便它们将结果写入。完成后,分离卷并将它们附加到主服务器。这将是最快的,而且比 EFS 更便宜。如果您不能或不会手动执行所有分离/附加操作,则需要编写一些脚本。
    4. 老派 NFS 共享:没有任何那些花哨的 AWS 首字母缩略词的普通 NFS 设置没有任何问题。 :-)

    【讨论】:

    • 是否可以将 EBS 卷分离为根设备?现在我每个都有 2TB。如果可能,那将是最简单的方法。
    • 不幸的是,无法卸载或分离根卷。但是,您可以将另一个卷附加并挂载到应用程序写入的同一目录点。
    • 如果您先停止实例,则可以分离根卷。 EBS 快照也可以帮助您解决问题 - 它们就像听起来一样,是块层的时间点一致快照。
    • @DanielFarrell 你是对的。忘记了停止的实例。
    猜你喜欢
    • 2013-12-24
    • 2016-12-12
    • 2019-11-30
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多