Rails AWS体系结构 – 从单个Linode机器迁移到AWS

我们的创业公司已经有一个应用程序在一个Linode盒子上成功运行了将近一年的Rails/MySQL+MongoDB/Unicorn/Nginx

我们最近决定迁移到AWS有几个原因:

  1. 成本 – 我们收到了价值数千美元的AWS信用(通过我们所在的加速器计划),如果不使用它,那将是一件耻辱。
  2. 可伸缩性 – 我们最近已经开始接受相当多的新闻了,而且我们的用户数量正在上升。 对于Linode盒的成本以及我们得到的回报,在不久的将来它将不能很好地扩展。
  3. 能力 – AWS堆栈在可用的function和工具方面似乎令人印象深刻,而且我听到并读了很多关于如何成为一个开始成长的好地方的好消息。

总而言之,成本和可扩展性问题为我们赢得了胜利,因为免费的可靠主机很难被击败(直到我们用完AWS信用)。 我们还没有获得资金,所有的IT成本都是从我自己的口袋里出来的(几百美元/月)。

所以基本上,我想将我们的应用程序迁移到AWS,我一直在考虑下面的堆栈:

  Elastic-Load-Balancer | | [1+ Rails App over Unicorn/Nginx] | | [1+ DB Server (MySQL + MongoDB)] 

应用程序或数据库服务器可以根据需要水平增长。 由于我们还没有真正推断断点,所以我想从1个应用程序服务器,1个数据库服务器(现在不是RDS)和ELB + Route53来pipe理DNS和负载平衡。

我从来没有使用过AWS,也没有DevOps专家,所以我想要反馈一些东西:

  1. 我应该如何pipe理有关独angular兽+ nginx设置的堆栈的Web服务器部分? 到目前为止,这一切都在同一台机器上,因此不是一个大问题。 我应该保持我的nginx.conf设置,并让nginx监听每个App实例上的端口80/443?
  2. 我希望能够通过简单地根据需要添加更多的实例(AMI's)来扩展App层。 这在短期内是可以pipe理的吗? 例如 – 直到我们有钱雇用devops家伙或closures商店由于贫穷:)
  3. 任何其他经验教训或要牢记的事情将不胜感激。

注意 – 由于各种原因,我不想使用OpsWorks:我们的应用程序服务器是非常定制的,没有Mercurial的支持,不是很成熟,等等。

谢谢。

Aws可以提供可扩展性,以防您需要体系结构build议

  • 使用elb作为第一层
  • 使用两个或更多应用程序服务器(出于冗余原因)
  • 如果可以的话,使用rds

现在…如果rds不是一个选项,你会得到一个主数据库和一个奴隶。 对于数据库,我build议使用带有条带的ebs卷。

configurationpipe理可以是任何真正的,只要你适应它。 当然有厨师,傀儡和喜欢。