【问题标题】:Dependency among different ecs tasks不同ecs任务之间的依赖关系
【发布时间】:2021-11-29 15:12:47
【问题描述】:

我使用 Spring Cloud 开发了一个使用多个微服务的后端服务器。 我有发现服务、配置服务和其他不同的服务。 现在出于测试目的,我使用 docker-compose 以正确的顺序运行它们。现在我决定在 AWS 上部署我的应用程序。

我想过使用 Fargare 使用 ECS 运行它们,但我无法理解如何定义我的任务之间的依赖关系。

我发现这篇文章https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_dependson 它定义了同一任务中容器之间的依赖关系。

但我不认为我可以只用一项任务来运行我的所有服务,因为分配 vCPU 会很复杂,即使我使用 4 个 vCPU 和巨大的内存,我也不确定我的容器运行得有多好。之后缩放它们将是另一个问题。总体而言,拥有如此庞大的 vCPU 和内存也会产生大量成本。

有没有办法定义ECS任务之间的依赖关系?

【问题讨论】:

    标签: amazon-ecs aws-fargate amazon-ecr ecs-taskdefinition


    【解决方案1】:

    CloudFormation 支持DepeendsOn 属性,该属性允许您控制部署顺序(您基本上在需要时为有序部署牺牲并行速度)。

    假设您的任务是作为 ECS 服务的一部分启动的,您可以将 DependsOn 设置为需要首先启动的服务。

    例如

    Resources:
      WebService:
        DependsOn:
        - AppService
        Properties:
      ....
      ....
    

    出于好奇,您是如何从 Compose 迁移到 CloudFormation 的?仅供参考,我们一直在与 Docker 合作,将功能添加到 Docker 工具集中以直接部署到 ECS(基本上将 docker compose 文件转换为 CloudFormation IaC)。有关更多背景信息,请参阅here。顺便说一句,这种机制尊重 compose 依赖链。也就是说,如果您在 compose 中设置一个服务依赖于另一个服务,则生成的 CFN 模板使用我上面描述的DependsOn 属性。

    【讨论】:

    • 感谢您的回答,我今天自己去看看。我在本地使用 compose,想使用 aws 服务进行生产
    • 酷。让我知道事情的后续。无论如何,如果您处于旅程的早期,如果您按照我上面链接的帖子进行操作,您应该能够 1) 使用 docker compose up 直接部署到 AWS 或 2) 使用 docker compose convert 从您的撰写文件中生成 CloudFormation 模板.
    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多