EC2上的自动扩展和数据复制

时间:2014-08-26 07:07:30

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

这是我的情景。

我们有一个ELB设置,其中有两个预留的EC2实例作为其下的Web服务器(Amazon Linux)。

Web服务器上有一些快速变化的文件(pdf,xls,jpg等),这些文件由EC2实例上托管的网站使用。代码文件是相同的,我们将确保在需要时使用新代码手动同时更新两个服务器。

主要问题是用户上传的内容存储在EC2实例上。 什么是确保上传文件几乎立即在两台服务器上都可用的最佳方法?

许多人建议使用rsync或unison,但这将涉及设置cron作业。我正在寻找像C#中的FileSystemWatcher这样的东西  仅当更改指定文件夹的内容时。此外,由于ELB,我们不确定在上传文件时哪个EC2实例将实际连接到用户。

为了添加上述内容,我们还有一个Staging Server将某些文件推送到其中一个EC2 Web服务器。我们希望这些文件也复制到另一个实例。

我想知道S3能否解决问题?如果我们决定启用自动缩放,这种设置仍然会很好吗? 我在这个阶段很困惑。请帮忙

2 个答案:

答案 0 :(得分:5)

S3将是您案例的选择。这样,您就不必在EC2实例之间同步文件。如果您需要启用自动缩放,它也可能是最佳选择。您不应该在EC2实例中放置任何数据,它们应该是无状态的,以便您可以轻松地自动缩放。

要使用S3,它将要求您的应用程序支持它,而不是直接写入本地文件系统。它应该很简单,每种语言都有许多库可以帮助您将文件存储到S3中。

答案 1 :(得分:2)

wbinglee的回答是AWS环境中的理想选择。这应该是对wbinglee答案的评论。我不得不将其添加为单独的答案,因为我还没有足够的声誉可以发表评论。

S3是任何此类共享存储的选择。

对于集中式日志记录,这些选项很少:

  • 将日志轮换到s3并在3个月后过期(设置s3对象到期)
  • 使用像splunk,loggly这样的SaaS日志记录服务,如wbinglee评论
  • 登录到您的syslog-ng服务器(这可能需要额外的服务器,或者您可以使用其中一台服务器作为syslog-ng服务器以及Web服务器)

如果您不喜欢s3用于文档存储,那么您可能希望通过其中一个工具使用linux的inotify服务来在文件修改时启动rsync: