我花了一天时间首次尝试使用AWS。我有一个EC2实例正在运行,我安装了一个Elastic Block Store(EBS)来保存MySQL数据库。
将我的Web应用程序文件放在EBS上是否有意义,还是应该将它们部署到普通的EC2文件系统?
答案 0 :(得分:7)
当您说出您的网络应用程序文件时,我不确定您到底指的是什么。
如果您指的是已部署的代码,则使用EBS可能没有意义。您要做的是创建具有先决条件的AMI,然后使用脚本创建该AMI的实例并部署最新代码。我强烈建议您自动化并测试此过程,因为很容易忘记某些必须手动更改的设置。
如果要存储由正在运行的应用程序修改的数据文件,则EBS可能有意义。如果这类似于用户上传的图像或类似内容,您可能会发现S3为您提供了更简单的模型。
EBS适用于:数据库,lucene索引,基于文件的CMS,SVN存储库或类似的东西。
答案 1 :(得分:2)
EBS为您提供持久存储,因此如果您的EC2实例失败,文件仍然存在。显然他们的IO性能有所提高,但我会测试它确定。
答案 2 :(得分:2)
如果你的文件经常变化(就像数据库一样)并且你不想继续将它们同步到S3(或其他地方),那么EBS是一个很好的方法。如果您进行不频繁的更改,并且可以根据需要手动(或编写脚本)同步文件,则将它们存储在S3中。如果您因任何原因需要关闭或丢失实例,则可以在启动新实例时将其拉下来。 这也假设您关心成本。如果成本不是问题,使用EBS就不那么复杂了。 我不确定你是否打算为你的数据库和你的网络文件分别设置一个EBS,但是如果你只打算拥有一个EBS并且你的网络文件上有足够的空白空间,那么EBS就不那么复杂了。 如果你担心它的性能,如上所述,最好测试你的特定应用程序。
答案 3 :(得分:1)
我们的方法是在AMI上预先部署一个脚本,从源代码控制中获取最新和最好的代码版本。这使得快速启动新实例或更新所有正在运行的实例非常简单(我们将它们从负载平衡轮换中逐个进行,运行脚本,然后将它们放回轮换中)。
更新:
在行之间进行读取,看起来您正在将单独的EBS卷安装到实例存储支持的实例。 AWS最近引入了EBS支持的实例,这些实例与旧的实例存储实例相比具有大量优势。不过,我仍然将我的MySQL数据安装在一个单独的EBS分区上,以便我可以根据需要轻松将其安装到不同的服务器上。
我强烈建议使用EBS支持的实例,该实例具有用于MySQL数据的单独EBS卷。