为了处理高流量,我计划在某些EC2实例上扩展,运行我的Web应用程序(基于WordPress)(我对AWS非常新)。实例需要处理相同的数据(图像,视频......)。
我正在考虑使用S3作为此共享数据的存储空间。
我的问题是:
如果我使用S3,是否需要为我的应用程序编写额外的代码以上传和从S3获取数据?或者有一种将EC2实例安装到S3的神奇方法,之后EC2实例可以访问S3作为访问本地存储?
我听说S3有点慢,因为它是通过Web服务访问的(如果用户上传文件,则需要时间将文件上传到S3)。那么有没有更好的方法来存储共享数据?
我已经阅读了一些有关扩展Amazon EC2能力的文档。但他们都没有提到如何处理共享数据。任何帮助都非常感谢。感谢。
答案 0 :(得分:0)
虽然有多个第三方应用程序提供使S3存储可用作虚拟驱动器或存储库的机制,但没有本地工具可以将S3存储桶“装载”为EC2实例的存储。他们中的大多数提供预设数量的免费存储空间,然后提供更大量的分层计费机制 - 谷歌搜索“S3存储接口”并查看。
无论您编写代码以通过API使用S3还是使用接口层,您的应用和存储之间总会存在一些延迟。这是一个物理事实,你无法做任何事情来消除延迟,因为S3存储库不是EC2集群的本地存储器 - 所以你永远不会达到'本地'存储访问速度。
另一种方法可能是使用EBS,其中 是您的EC2实例的本地 - 它具有与S3不同的属性(例如,它不提供区域本地化访问的边缘位置)但是很多应用程序使用速度更快,因为它位于EC2群集内并作为本地存储装载。
答案 1 :(得分:0)
您可以将S3存储桶安装到所有EC2实例上。这是一个双向安装,因此所有文件都将同步。您可以使用s3f3进行安装。
我使用本指南并快速设置我的:Mount S3 onto EC2
如果您关注速度,可以使用Amazon ElastiCache甚至使用EBS作为缓存驱动器。
答案 2 :(得分:0)
对于开始,你的问题缺乏关于你的应用程序架构的一些细节,但有一些可能性。
首先,如果您的项目是中等大小,您可以在主节点上同时使用 GlusterFS 作为服务器和客户端(使用本机或NFS协议), RDS * 多可用区 * DataBase的MySQL实例。 CloudFront为CDN,带有 CDN链接器或W3TC插件。另外,把ELB放在前面。 在这种特殊情况下,我会建议至少使用几个 c3.large 实例。
其次,当您的项目增长时 - 您应该创建实例AMI并创建一个自动扩展组,该组只能连接到您的主存储和计算实例。 (还要考虑从这些相当小的实例中提升计算负载)。
另外要考虑的事项: