【问题标题】:How to properly deploy Spring Cloud services to AWS ECS如何将 Spring Cloud 服务正确部署到 AWS ECS
【发布时间】:2018-04-06 02:44:58
【问题描述】:

上周我一直在努力寻找如何正确实现这一目标的好例子,但互联网似乎没有任何东西......

我想说的是一个非常基本的 Spring Cloud 服务。它包括 Eureka、Zuul、Spring Config 和一些服务。

我已经使用esc-cli 研究了如何根据我的docker-compose.yml 文件轻松创建新任务。所以我有两个任务

一项管理任务,其中包含现阶段不需要扩展的基本内容,并且拥有它们的一个实例对于这个项目来说就很好了。

version: '2'
services:

  mongo:
    image: mongo
    cpu_shares: 300
    mem_limit: 268435456
    ports:
      - 27017:27017   

  config-service:
    image: config-service
    cpu_shares: 300
    mem_limit: 268435456
    ports:
      - 8888:8888
    environment:
      - SPRING_PROFILES_ACTIVE=cloud

  edge-service:
    image: edge-service
    cpu_shares: 300
    mem_limit: 268435456
    ports:
      - 80:8080
    environment:
      - SPRING_PROFILES_ACTIVE=cloud

我的第二个任务有上述任务的客户。

version: '2'
services:

  instance-service:
    image: instance-service
    cpu_shares: 300
    mem_limit: 268435456
    ports:
      - 8081:8081
    environment:
      - SPRING_PROFILES_ACTIVE=cloud

  restore-service:
    image: restore-service:latest
    cpu_shares: 300
    mem_limit: 268435456
    ports:
      - 8082:8082
    environment:
      - SPRING_PROFILES_ACTIVE=cloud

我可以使用ecs-cli compose --file management-task.yml --project-name management-task up 这样的简单命令轻松创建这些任务,那里没问题。

在我遇到问题的地方,没有任何东西可以到达 EurekaConfig 服务,所以它们都死了。我已经阅读了所有可以使用应用程序负载平衡来允许容器相互通信的地方,但是我实际上找不到任何关于如何做到这一点的信息。 p>

我设法找到的最接近的是http://www.rahulkatte.com/index.html#!/microservice-part-V 的博客文章,但是他们没有利用 Eureka 在任务中,也没有在配置服务器中使用。

那么,有没有关于如何将现代 Spring Cloud 应用程序部署到 AWS 的全面示例?或者是否有人对如何让我的任务/容器相互通信有任何指示,而不仅仅是说“使用负载平衡器......”?

感谢您的宝贵时间。

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 spring-cloud


    【解决方案1】:

    所以我知道这是对帖子的一种抹杀,但这里还没有答案,所以对于将来发现它的任何人的后代:

    您在这里处理的是“服务发现”问题,有多种解决方法:

    1. 您可以按照您的说明使用负载平衡器。执行此操作的方法是创建一个 ALB,然后在该 ALB 中创建一个目标组。目标组的健康检查必须是字符串字面量“流量端口”,因为每个 ECS 容器都会有一个随机端口。确保附加到您的 ECS 集群的 EC2 实例的安全组允许所有 TCP 端口上的传入。请注意,如果您的 ALB 健康检查由于某种原因而失败,容器将设置为“draining”并关闭。

    2. ECS 最近也宣布了 ECS 服务发现(在您的帖子之后,但现在是 GA)。 See this post.

    3. 您可以使用原生支持服务发现的 Kubernetes (EKS)。

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2018-05-12
      • 2018-06-14
      • 2020-12-13
      • 1970-01-01
      • 2023-03-15
      • 2019-11-08
      • 2017-03-10
      • 2021-03-29
      相关资源
      最近更新 更多