这是我的情景。
我们有一个ELB设置,其中有两个预留的EC2实例作为其下的Web服务器(Amazon Linux)。
Web服务器上有一些快速变化的文件(pdf,xls,jpg等),这些文件由EC2实例上托管的网站使用。代码文件是相同的,我们将确保在需要时使用新代码手动同时更新两个服务器。
主要问题是用户上传的内容存储在EC2实例上。 什么是确保上传文件几乎立即在两台服务器上都可用的最佳方法?
许多人建议使用rsync或unison,但这将涉及设置cron作业。我正在寻找像C#中的FileSystemWatcher这样的东西 仅当更改指定文件夹的内容时。此外,由于ELB,我们不确定在上传文件时哪个EC2实例将实际连接到用户。
为了添加上述内容,我们还有一个Staging Server将某些文件推送到其中一个EC2 Web服务器。我们希望这些文件也复制到另一个实例。
我想知道S3能否解决问题?如果我们决定启用自动缩放,这种设置仍然会很好吗? 我在这个阶段很困惑。请帮忙
答案 0 :(得分:5)
S3将是您案例的选择。这样,您就不必在EC2实例之间同步文件。如果您需要启用自动缩放,它也可能是最佳选择。您不应该在EC2实例中放置任何数据,它们应该是无状态的,以便您可以轻松地自动缩放。
要使用S3,它将要求您的应用程序支持它,而不是直接写入本地文件系统。它应该很简单,每种语言都有许多库可以帮助您将文件存储到S3中。
答案 1 :(得分:2)
wbinglee的回答是AWS环境中的理想选择。这应该是对wbinglee答案的评论。我不得不将其添加为单独的答案,因为我还没有足够的声誉可以发表评论。
S3是任何此类共享存储的选择。
对于集中式日志记录,这些选项很少:
如果您不喜欢s3用于文档存储,那么您可能希望通过其中一个工具使用linux的inotify服务来在文件修改时启动rsync: