使用Docker扩展微服务

Nic*_*ull 5 amazon-ec2 node.js meteor docker microservices

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

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

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

我已经研究过AWS EC2,Docker Compose和nginx,但我不确定我是否正朝着正确的方向前进.

Cha*_*son 0

研究 Kubernetes 和/或 Mesos,您将永远不会回头。它们是为您想要做的事情量身定制的。您应该关注的两个组件是:

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

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

这里实际上有几十种选择:Docker Swarm、Rancher 等也是相互竞争的选择。许多云供应商(例如 Amazon)也提供具有这些功能的专用服务(例如 ECS)。但 Kubernetes 和 Mesos 正在成为标准选择,因此,如果您至少从那里开始,您将会有一个很好的伙伴。