我花了一天时间第一次尝试 AWS。我已经运行了一个 EC2 实例,并安装了一个 Elastic Block Store (EBS) 来保存 MySQL 数据库。
将我的 Web 应用程序文件也放在 EBS 上是否有意义,还是应该将它们部署到普通的 EC2 文件系统?
我花了一天时间第一次尝试 AWS。我已经运行了一个 EC2 实例,并安装了一个 Elastic Block Store (EBS) 来保存 MySQL 数据库。
将我的 Web 应用程序文件也放在 EBS 上是否有意义,还是应该将它们部署到普通的 EC2 文件系统?
当您说您的 Web 应用程序文件时,我不确定您指的是什么。
如果您指的是已部署的代码,那么使用 EBS 可能没有意义。您要做的是使用您的先决条件创建一个 AMI,然后使用一个脚本来创建该 AMI 的一个实例并部署您的最新代码。我强烈建议您自动化并测试此过程,因为很容易忘记您必须在某处手动更改的某些设置。
如果您正在存储由正在运行的应用程序修改的数据文件,那么 EBS 可能是有意义的。如果这类似于用户上传的图像或类似内容,您可能会发现 S3 为您提供了一个更简单的模型。
EBS 适用于:数据库、lucene 索引、基于文件的 CMS、SVN 存储库或任何类似的东西。
EBS 为您提供持久存储,因此如果您的 EC2 实例失败,文件仍然存在。显然它们提高了 IO 性能,但我会对其进行测试以确定。
如果您的文件要经常更改(就像数据库一样)并且您不想继续将它们同步到 S3(或其他地方),那么 EBS 是一个不错的选择。如果您不经常进行更改,并且您可以根据需要手动(或脚本化)同步文件,然后将它们存储在 S3 中。如果您需要关闭或由于某种原因丢失了您的实例,您可以在启动新实例时将它们拉下来。这也是假设您关心成本。如果成本不是问题,使用 EBS 就不那么复杂了。我不确定您是否计划为您的数据库和您的 Web 文件使用单独的 EBS,但如果您只计划拥有一个 EBS 并且您有足够的空白空间用于您的 Web 文件,那么再次,EBS 不那么复杂. 如果您担心的是性能,如上所述,最好测试您的特定应用程序。
Our approach is to have a script pre-deployed on our AMI that fetches the latest and greatest version of the code from source control. That makes it very straightforward to launch new instances quickly, or update all running instances (we take them out of the load balancing rotation one at a time, run the script, and put them back in the rotation).
UPDATE:
Reading between the lines it looks like you're mounting a separate EBS volume to an instance-store backed instance. AWS recently introduced EBS backed instances that have a ton of benefits vs. the old instance-store ones. I still mount my MySQL data on a separate EBS partition, though, so that I can easily mount it to a different server if needed.
I strongly suggest an EBS backed instance with a separate EBS volume for the MySQL data.