在AWS上部署我的第一个应用程序

时间:2011-09-03 01:47:21

标签: ruby-on-rails amazon-ec2 amazon-web-services load-balancing scaling

我现在是一名Web开发人员,现在对sysadmin的东西感兴趣。我之前在Linode.com上设置了一个服务器(Ubuntu 10.04 LTS,nginx,Ruby on Rails,PostgreSQL),但是有一些问题。一切都在一台机器上,所以每当Linode出现问题或我收到大量流量时,我的网站就会崩溃。

现在我有兴趣建立个人博客,并在亚马逊AWS上部署它。这是一个很好的机会让我学会如何使用多个服务器进行负载平衡,自动扩展,故障转移等。唯一的问题是我不太确定从哪里开始。

我已经阅读了亚马逊的一系列文档和其他地方的博客文章,但作为一个系统管理员新手,我有几个问题:

  • 我认为EC2实例太不稳定而无法存储数据。那么我应该在哪里存储它?亚马逊弹性块商店?整个文件系统会和数据库一起去吗?
  • 我是否需要认真了解负载平衡和扩展?或者Amazon Elastic Load Balancer手柄会让我变得简单吗?他们的负载均衡器如何与nginx交互?
  • 您建议通过AWS界面而不是通过命令行执行多少操作?
  • 任何可能引起我注意的非显而易见的障碍?
  • 是否有任何教程可以在EC2上部署博客或简单的Rails应用程序?我不需要这里的生产质量设置;我的主要目标是学习。

感谢您提供的任何答案!

1 个答案:

答案 0 :(得分:3)

我已经建立了公平的AWS部署份额;这是基础知识:

数据存储

如果您有经常访问的数据,您可能知道,最好使用数据库。这是AWS托管的一个较为棘手的部分。您的选择大致按复杂性/成本的顺序递增:

  1. SimpleDB - 亚马逊自己的数据库产品。它们为您提供HTTP api,您可以使用它来读取和写入数据。它有一些rails库,但总的来说,它不是一个优雅的rails ../ / li>
  2. Amazon RDS - 亚马逊将为您预先配置类似mysql的数据库服务器。这需要您启动数据库服务器实例,因此定价服务器不适合小型站点。从好的方面来说,它可以让您更轻松地扩展数据库服务器。
  3. 滚动自己 - 围绕亚马逊EC2实例计划随时消失;因此,使用EC2实例获得的本地存储最好被视为一个大临时目录。 Elastic Block Store是亚马逊的解决方案;它实际上是一个实例挂载的磁盘映像。 EBS映像与EC2实例无关,因此如果服务器出现故障,您可以将EBS映像安装在新的EC2实例上。实际上,您可以通过引导一堆实例并将它们配置为相互复制来自行滚动您自己的数据库集群。这样做有效,但并不优雅,如果你不能用不那么奇特的方法来解决你的问题,那真的应该尝试。
  4. 亚马逊几乎列举了这些选项,以及一些不适用于http://aws.amazon.com/running_databases/

    的选项

    不经常更改的数据应存储在S3中;有很多红宝石可以轻松访问它。如果您的网站在服务器端完全是静态的,您甚至可以run your entire site off S3

    负载平衡

    Amazon“Elastic Load Balancing”在典型的Web负载平衡要求下非常有效。除非您有异国情调的要求,否则通常是一个明智的选择。但是,它不会为您扩展群集。对于自动启动和关闭实例,您应该查看亚马逊自己的auto-scaling solution

    注意事项

    请务必记下您所在的“可用区域”(也称为数据中心)。在某些情况下,您无法跨可用区域共享AWS资源。

    教程

    有很多教程,但在我的简短搜索中,没有一个我发现真的很棒或最新。但是,请查看https://github.com/wr0ngway/rubber,这是一个用于将应用程序部署到EC2的ruby工具。它将帮助你完成大部分工作。