Networking 基于Docker的微服务体系结构中的领事

Networking 基于Docker的微服务体系结构中的领事,networking,amazon-ec2,architecture,microservices,consul,Networking,Amazon Ec2,Architecture,Microservices,Consul,我们正在致力于从单一应用程序切换到微服务。 每个微服务都将通过亚马逊ECS在Docker上运行 我们已决定使用Concur进行服务发现。我们有3台服务器在VPC内的EC2实例上运行 我的问题如下: 如何/在何处启动每个微服务的领事代理?我是否在每个实例上运行另一个容器(通过Docker Compose),其中包含Consul?或者,我是否应该在已经存在的Docker容器中为每个微服务运行一个领事代理 附件是我的情况的粗略描述。 Concur客户端(黄色)应该在它自己的Docker容器中还是在N

我们正在致力于从单一应用程序切换到微服务。 每个微服务都将通过亚马逊ECS在Docker上运行

我们已决定使用Concur进行服务发现。我们有3台服务器在VPC内的EC2实例上运行

我的问题如下:

如何/在何处启动每个微服务的领事代理?我是否在每个实例上运行另一个容器(通过Docker Compose),其中包含Consul?或者,我是否应该在已经存在的Docker容器中为每个微服务运行一个领事代理

附件是我的情况的粗略描述。
Concur客户端(黄色)应该在它自己的Docker容器中还是在Node.js容器中?

Concur是另一个服务,我不会将它部署在我的微服务的容器中。在大规模场景中,我将部署几个concur容器:一些容器将在服务器模式下运行代理(将它们视为主容器),另一些容器将在客户机模式下运行代理(将它们视为从容器)

我不会将在客户端模式下运行的代理部署为应用程序容器的一部分,因为:

  • 隔离它们意味着它们被单独停止。将它们放在一起意味着,每当我因为版本升级或故障而停止应用程序的容器时,我都会不必要地停止其中运行的concur代理。反过来也是一样:停止concur代理将停止我正在运行的应用程序。这种不必要的耦合是没有好处的
  • 隔离它们意味着它们可以单独缩放。我可能需要扩展我的微服务并部署更多实例。如果容器还包含concur客户端代理,那么扩展我的微服务最终也会扩展concur。或者反过来说:我可能需要在不扩展微服务的情况下扩展Consor
  • 就Docker容器映像而言,隔离它们更容易。我可以继续使用官方领事形象和升级没有太多的麻烦。将concur和我的微服务放在一起意味着升级concur需要我自己修改容器映像