我们有一个用户上传文件的网站,其中一些非常大。我们有多个EC2实例,并希望对它们进行负载均衡。目前,我们将文件存储在EBS卷上以便快速访问。复制文件的最佳方法是什么,以便它们可以在多个实例上使用?
我的想法是,将文件上传到S3,然后自动将它们下载到其他EC2实例的自动复制过程将是理想的。
EBS快照无法正常运行,因为它们会复制整个卷,我们需要能够按需复制各个客户的目录。
答案 0 :(得分:2)
您可以编写一个shell脚本,只要上传(或删除)新文件,就会生成s3cmd以将本地文件系统与S3存储桶同步。它看起来像是:
s3cmd sync ./ s3://your-bucket/
答案 1 :(得分:1)
两种方式:
1。 Amazon CloudFront是一项用于内容交付的网络服务。它使用全球边缘位置网络提供静态和流媒体内容。
http://aws.amazon.com/cloudfront/
2. 您可以在Linux计算机上安装S3存储桶。见下文:
s3fs - http://code.google.com/p/s3fs/wiki/InstallationNotes - 这确实对我有用。它使用FUSE文件系统+ rsync来同步文件 在S3。它掌握了所有的副本 本地系统中的文件名&使 它看起来像一个文件/文件夹。
这样你就可以在不同的机器上共享S3存储桶。
答案 2 :(得分:0)
取决于您在EC2实例上运行的操作系统:
除非你因为某些其他原因(例如备份)将它们存储在那里,否则没有必要在混音中添加S3。
如果您正在运行* nix,那么经典的选择可能是运行rsync并仅在实例之间进行同步。
在Windows上,你仍然可以使用rsync,否则微软的SyncToy是一个简单的免费选项。否则,这个领域可能有数百个商业应用......
如果您确实希望同步到S3,那么我会推荐其中一个S3客户端应用程序,如CloudBerry或JungleDisk,它们都具有同步功能......
如果您正在运行Windows,那么也值得考虑提供复制的DFS(分布式文件系统),它是Windows Server的一部分......
答案 3 :(得分:0)
最好的方法是使用Amazon Cloud Front服务。所有复制都作为AWS的一部分进行管理。内容由多个不同的可用区域提供,但不要求您在这些区域中拥有EBS卷。
Amazon CloudFront使用全球边缘位置网络提供您的静态和流媒体内容。对象的请求会自动路由到最近的边缘位置,因此内容将以最佳性能传递。