将springboot微服务部署到AWS ECS

时间:2020-03-13 08:13:03

标签: amazon-web-services docker amazon-ec2 amazon-ecs

我目前正在开发一种云备份解决方案,该解决方案涉及在spring-boot中开发的多达8种微服务,并使用mongo DB Atlas作为持久层。

微服务涉及Netflix ZUUL API网关和Netflix Eureka作为服务发现机制。微服务之间必须进行明显的对话。

微服务已码头化。到目前为止,我已经使用docker-compose文件将它们部署到EC2实例,该文件列出了使用docker网络的所有服务和通信

现在,我一直在尝试使用ECS部署微服务。我一直在下面的链接来创建群集等。 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cli-tutorial-ec2.html

我的问题如下:

  1. 我应该为每个微服务创建一个任务定义并将其部署到一个公共集群中,还是应该有一个任务应该使用docker-compose文件将所有微服务融合在一起?服务发现在这种情况下如何工作?

  2. 当前,服务使用伪代理和eureka服务器相互通信。保持原样的最佳方法是什么,或者您提出什么建议?我之前使用过Fargate并部署了微服务,但是服务发现和服务注册失败

请指导我,在ECS中设计此类应用程序部署的最佳方法是什么

1 个答案:

答案 0 :(得分:-1)

撰写文件仅指示在同一节点上运行的容器之间的通信。服务发现通常被认为是分布式系统的一项理想功能,因此我将假设您正在多个节点上运行堆栈,并以某种方式在它们之间进行负载平衡以提供弹性和高可用性(HA)。否则,您只需要使用EC2并安装docker。

您需要在节点上运行容器/服务,因此您可以继续使用Compose文件。但是,您不应该使用它来定义服务之间的通信,因为您希望它通过服务网格(服务+发现+代理==服务网格)。另外,用bash脚本中的docker container run条语句替换Compose相对容易。

您选择的服务网格已经过时了。现在,我将使用Envoy代理来查看领事和领事连接,而不是eureka,这项技术是Eureka的几代产品,并且更加简单。