在AWS上扩展节点

时间:2016-12-14 18:02:37

标签: mongodb amazon-web-services nginx

我目前在AWS上托管了一个小型网站。

服务器是一个微实例。 在这个微观实例上:

  • 我正在运行nginx来提供静态文件和错误页面
  • 我正在运行我的节点服务器
  • 我正在存储我的mongoDB

随着网站流量的增加,我达到了需要扩展的时间,我不确定最佳做法是什么以及每种做法的含义是什么。

我希望任何推荐阅读材料

我在考虑:

  • 运行网站的2个专用微实例
  • 运行nginx的1个微实例
  • 存储db的1个微实例

问题:

  1. 将数据库存储在单独的计算机上会产生查询 显着慢?

  2. 我实际上应该将数据库存储在S3上吗?

  3. 单独为nginx设置一个完整的实例是否合理?

  4. 您如何从1台机器扩展到多台机器?我猜测从一到二移动比从两个移动到50更难。

    任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

  
      
  1. 将数据库存储在单独的计算机上会使查询显着变慢吗?
  2.   

不,速度影响非常小,无论如何都需要这种可扩展性。只需确保使用实例的私有IP地址进行任何实例间通信,以便流量保留在VPC内(出于安全性和性能原因)。

  
      
  1. 我实际上应该将数据库存储在S3上吗?
  2.   

不,那根本不起作用。您无法在S3上存储数据库,只能存储数据库备份。

  
      
  1. 单独使用nginx的整个实例是否合理?
  2.   

如果你获得足够的流量,那么绝对是。

  

您如何从1台机器扩展到多台机器?

通常,您需要将数据库移动到单独的服务器,创建Web服务器的多个实例,并在其前面放置负载均衡器。如果您希望基于流量进行自动扩展,那么您还可以将Web服务器放在自动扩展组中。如果这一切听起来很难,那么我建议您考虑将您的网络服务器移动到Elastic Beanstalk,这将为您管理大部分内容。

如果您的数据库是瓶颈,那么您可能还需要设置MongoDB群集并平衡群集中的负载。您也可以将数据库移动到类似mlab的内容,这样可以大大简化对数据库的管理。