使用自动缩放处理EC2/S3上的Wordpress媒体文件

Joe*_*nin 2 wordpress caching amazon-s3 amazon-ec2 autoscaling

我正在使用Amazon AWS上的WordPress部署配置.我在Ubuntu EC2实例上运行Apache上的WordPress.我正在使用W3 Total Cache进行缓存,并从S3存储桶提供用户上传的媒体文件.负载均衡器将流量分配到两个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实例之间复制媒体文件.

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

Mik*_*ant 5

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

s3fs还能够使用本地(ephermal)目录作为s3fs目录的缓存,以提高性能.