【问题标题】:Why use AWS ECS if I can deploy a multiple service docker container using EC2 Auto-scaling groups?如果我可以使用 EC2 自动扩展组部署多服务 docker 容器,为什么还要使用 AWS ECS?
【发布时间】:2021-05-27 02:24:45
【问题描述】:

我在 docker-compose 文件中使用了三个服务:Django API、Celery 和 Redis。我可以使用 AWS ECS 运行它,我必须为此创建 3 个服务(每个服务一个),并且为每个创建的服务至少创建三个任务,与我可以通过运行 docker 部署 3 个服务的 AWS EC2 实例相比,这似乎很昂贵-compose 命令,我还可以通过创建我的实例的图像并将负载均衡器附加到它来附加自动缩放组以进行水平缩放。

我不明白为什么要使用 ECS,它主要用于自动扩展多服务 dockerized 应用程序,而我可以使用简单的 EC2 自动扩展组来做同样的事情。我错过了什么吗?

【问题讨论】:

    标签: amazon-ec2 docker-compose amazon-ecs aws-application-load-balancer aws-auto-scaling


    【解决方案1】:

    “为什么要使用 ECS”本质上是一个“为什么要使用抽象”的问题。为了回答这个问题,ECS 将自己称为“完全托管的容器编排服务”,并在 EC2 实例集群之上提供抽象(由您或 AWS 运行和管理,具体取决于您做出的选择)。这将归结为您在选择使用(或不选择)ECS 之前要考虑的这些选择:

    1. 您想自己将容器映射到 EC2 实例,还是希望您的容器编排引擎为您处理?

    2. 您是否想了解底层 EC2 实例并因此负责运行和修补它们,或者您是否希望您的容器编排引擎为您处理它?

    3. 您希望自己负责在您的所有 EC2 实例上单独重新部署新建和测试的容器,还是希望您的容器编排引擎和相关的计算平台(例如 Fargate)为您处理它?

    【讨论】:

    • 第三点,通过将 Autoscaling Groups (ASG) 与 AWS Codepipeline 连接(由 Github 分支触发),我可以将我的 docker 应用程序自动部署到我的所有 ASG 实例。使用 ECS 创建多个服务 docker 容器几乎是不可能的,而且成本也很高,而在 EC2 中,您可以使用 docker-compose cmd 轻松部署它。我尝试了服务发现和 ECS-CLI,但无法让我的所有服务一起工作。因此,我将 Celery 和 Redis 替换为 Lambda 和 SQS 用于异步过程,并且在 ECS 中仅使用一个 Django 容器。您认为在 EC2 ASG 中部署是否经济高效且更容易?
    猜你喜欢
    • 2015-06-17
    • 2015-05-01
    • 2016-05-20
    • 1970-01-01
    • 2021-01-24
    • 2015-10-07
    • 2018-06-14
    • 2021-04-22
    • 2018-04-13
    相关资源
    最近更新 更多