在EC2/S3上自动缩放Wordpress媒体文件



我正在Amazon AWS上进行WordPress部署配置。我有WordPress运行在Apache上的一个Ubuntu EC2实例。我使用W3 Total Cache进行缓存,并从S3 bucket提供用户上传的媒体文件。负载均衡器将流量分配给两个EC2实例,并具有自动缩放以处理高负载。

问题是用户上传的媒体文件本地存储在wp-content/uploads/,然后同步到S3桶。这意味着媒体文件在EC2实例之间是不一致的。

以下是我正在考虑的方法:

  1. 使用WordPress插件直接将媒体文件上传到S3,而无需将其存储在本地。问题是,我发现的唯一的插件(这个和这个)是错误和维护不善。我可不想自己花几个小时修理这些东西。目前还不清楚它们是否与W3 Total Cache(我也想将其用于其他缓存工具)干净地集成在一起。
  2. 拥有一个主实例,用户可以在主实例中访问管理界面并上传媒体文件。所有媒体文件都将存储在此实例的本地(并通过W3 Total Cache同步到S3)。自动伸缩将部署没有本地文件存储的从实例。
  3. 使所有EC2实例相同,并将wp-content/uploads/指向单独的EBS卷。所有实例将共享媒体文件。
  4. 使用rsync在EC2实例间复制媒体文件

有明确的赢家吗?我应该考虑其他方法吗?

您可以考虑查看s3fs (http://code.google.com/p/s3fs/)之类的东西。这允许您将S3存储桶作为卷挂载到服务器实例上。您可以简单地使用在实例启动时执行的挂载卷的代码。

s3fs还能够使用本地(临时)目录作为s3fs目录的缓存,从而提高性能。

最新更新