2

我有一个 Scalar EC2 集群,并且想要一种在所有实例之间同步文件的简单方法。

例如,我在一个实例上的 /var/www 中有一堆文件,我希望能够识别所有其他主机,然后 rsync 到每个主机以更新它们的文件。

ls /etc/aws/hosts/app/

返回所有其他实例的 IP 地址

10.1.2.3 10.1.33.2 10.166.23.1

想法?

4

1 回答 1

2

正如 Zach 所说,您可以使用S3

  • 您可以下载许多客户端之一,以将驱动器映射到 S3。(搜索 S3 和 webdav)。
  • 如果我要走这条路,我会用我所有的共享文件设置一个 S3 存储桶,并在 cronJob 中使用jetS3将每个节点的本地驱动器同步到存储桶(下拉 S3 存储桶更新)。然后,由于我通常使用 eclipse & ant 进行构建,因此我将创建一个 ANT 作业来将更新部署到 S3 存储桶(将更新推送到 S3 存储桶)。

来自http://jets3t.s3.amazonaws.com/applications/synchronize.html

Usage: Synchronize [options] UP <S3Path> <File/Directory>

(...) 或:同步 [选项] DOWN

UP      : Synchronize the contents of the Local Directory with S3.
DOWN    : Synchronize the contents of S3 with the Local Directory
...

如果您不需要跨节点文件锁定,我会推荐上述解决方案。这很简单,每个系统都可以从一个中心位置提取数据。

如果您需要更多的跨节点锁定:

一个理想的解决方案是使用 IBM 的GPFS,但 IBM 不只是放弃它(至少现在还没有)。尽管它是为高性能互连而设计的,但它也能够用于较慢的连接。我们用它作为 NFS 的替代品,它的速度非常快(大约是 NFS 的 3 倍)。可能有类似的东西是开源的,但我不知道。编辑:OpenAFS可能适用于在许多 EC2 实例上构建集群文件系统。

您是否评估过使用 NFS?也许您可以将一个实例专用为 NFS 主机。

于 2010-07-28T16:16:52.473 回答