从VM到Docker - 了解哪些容器在哪些主机上运行

时间:2017-09-09 23:32:30

标签: docker docker-swarm

我目前在AWS上使用VM(EC2)在VPC内运行应用程序,如下所示。

  • 主LB.
    • 针对主API运行 LEMP堆栈的2到4个EC2实例
  • EC2实例运行 ReactJS App for Admin panel
  • 运行 Jenkins
  • 的EC2实例
  • 2个运行 LogStash
  • 的EC2实例
  • 1个EC2实例正在运行 Kibana ElasticSearch

我正在努力将所有这些转换为Docker for Production-use(Docker Swarm)。我知道我可以为每个组件制作容器和Dockerfiles,但是在部署时,我的问题如下。

  1. 到目前为止,所有这些组件都可以在本地联网,因为它们都存在于同一个VPC中。我想他们会继续这样做。但它们是否应该存在于同一个Docker Swarm中?

  2. 我非常习惯每个组件都在自己的小型服务器上,但现在,每个组件都在其自己的容器中。那么想要在实例中运行一些更大的服务器和几个容器(根据需要)?换句话说,其中一些组件最终可能存在于同一台服务器上,但这是使用容器时的预期行为?

    或者我是否应该将某些组件(即ElasticSearch)拆分为自己的服务器?

  3. 在什么情况下你想拥有多个Docker Swarms?是否最好假设任何与此应用程序相关的任何内容都应存在于这一群中?

1 个答案:

答案 0 :(得分:1)

按顺序回答您的问题

  1. 没有必要将所有容器保留在同一个群集中,如果在同一个VPC中运行多个群集,则可以具有类似的网络功能。但是我建议在同一个集群中运行它们(除非有严格的法规要求或任何其他强烈需求),以便您可以利用docker中的内部网络和链接功能来进一步保护您的容器。

  2. 当您将当前服务停靠到多个容器时,根据粒度,您可以独立扩展,处理容错并维护单个部署的容器生命周期。由于ElasticSearch通常会收到大量请求,因此将其分隔到自己的容器是合乎逻辑的。同样在同一主机中运行容器并不是一个问题。事实上,Swarm将处理容器放置到不同的主机,这样如果主机出现故障,Swarm将根据配置在不同的主机中配置另一个容器实例,这对于容错非常重要。

    < / LI>
  3. 您可以使用单个群体进行生产。可以使用多个Swarm集群的一个常见用例是将不同的部署阶段(测试,登台等)分离到多个集群。

  4. 另请参阅AWS EC2 container service,它是AWS中可用的完全托管的docker容器服务。与Swarm相比,在AWS中管理容器会更容易,因为它与IAM,Autoscaling,Load Balancing&amp; amp;等。