使用Docker扩展微服务

时间:2016-03-22 00:49:13

标签: node.js meteor amazon-ec2 docker microservices

我创建了一个Node.js(Meteor)应用程序,我正在研究未来处理扩展的策略。我将我的应用程序设计为一组微服务,我现在正在考虑在生产中实现它。

然而,我想要做的是在一个服务器实例上运行许多微服务,以便在使用少量资源时最大限度地利用资源。我知道容器对此很有用,但我很好奇是否有办法创建一个动态扩展的容器集合,我可以:

  • 编写命令,例如“如果运行此应用的容器达到> 80%CPU /其他限制指标,则在此服务器上设置另一个应用容器”,
  • 如果需要额外容器,请提供并准备其他服务器,
  • 这些容器之间的负载平衡连接(这是否会影响服务器负载平衡,例如,减少与较少容器的服务器的连接?)

我查看了AWS EC2,Docker Compose和nginx,但我不确定我是否朝着正确的方向前进。

3 个答案:

答案 0 :(得分:0)

调查Kubernetes和/或Mesos,你永远不会回头。它们是根据您的目标量身定制的。您应该关注的两个组件是:

  1. 服务发现:这允许相互依赖的服务(微服务“A”调用“B”)相互“找到”。它通常使用DNS完成,但在其上面有注册功能,可以处理实例缩放时发生的情况。

  2. 调度:在Docker-land中,调度与CRON作业无关,它意味着容器如何按各种方式扩展和“打包”到服务器中,以最大限度地有效利用可用资源

  3. 这里实际上有几十个选项:Docker Swarm,Rancher等也是竞争对手。像亚马逊这样的许多云供应商也提供具有这些功能的专用服务(例如ECS)。但是Kubernetes和Mesos正在成为标准选择,所以如果你至少从那里出发,那么你就会很好。

答案 1 :(得分:0)

可以通过Docker API(以及cool blog post)收集指标,并且通常会将其用于此目的。 修补DAPI和docker堆栈工具(compose / swarm / machine)可以提供很多工具来有效地扩展微服务架构。

我可以建议Consul在这种资源感知系统中管理发现。

答案 2 :(得分:0)

我们正在使用AWS托管我们的miroservices应用程序,并使用ECS(AWS docker服务)来容器化不同的API。

在这种情况下,我们使用AWS自动扩展功能来管理扩展和扩展。 Check this

希望有帮助。