【问题标题】:AWS ECS: Monitoring the status of a service updateAWS ECS:监控服务更新的状态
【发布时间】:2019-06-05 11:58:55
【问题描述】:

我正在尝试使用 Fargate 将一组微服务从 Docker Swarm 迁移到 AWS ECS。

我已经创建了一个 ECS 集群。此外,我还使用 ECR 初始化了存储库,每个存储库都包含一个微服务的图像。

我已经成功地想出了一种方法来创建新图像,并将它们推送到 ECR。事实上,随着代码的每次更改,都会构建、标记和推送一个新的 docker 镜像。

此外,我创建了一个链接到服务的任务定义。此任务定义包含一个容器和所有必要的信息。此外,它的服务定义了任务将在 VPC 中运行,并链接到负载均衡器,并具有目标组。我假设每个新部署都使用带有“最新”标签的图像。

到目前为止,我已经解释过,一切都很清楚并且运行良好。

下面是让我困惑的部分。在每次新构建之后,我想更新服务,以便部署更新映像的新任务。我正在使用 cli 执行以下命令:

aws ecs update-service --cluster <cluster-name> --service <service-name>

通常,在执行命令后,我会在事件选项卡下监视部署日志,并使用以下命令检查服务的状态:

aws ecs describe-services --cluster <cluster-name> --service <service-name>

最后,我尝试模拟一个新创建的图像包含错误代码的情况。因此,新任务将无法部署。我所见证的是,Fargate 将继续尝试(不停止)部署新任务。此外,除了事件日志之外,describe-services 命令不包含相关信息,除了 Fargate 正在执行的操作(例如,注册/取消注册任务)。我很惊讶我找不到任何机制来指示 Fargate 或服务停止部署并回滚到现有的。

我找到了这篇文章 (https://aws.amazon.com/blogs/compute/automating-rollback-of-failed-amazon-ecs-deployments/ ),它提供了一个解决方案。但是,这是一个相当复杂的任务,并且假设每个新部署都由新的任务定义触发,这不是我想要的。

因此,考虑到我上面的描述,我希望你能回答以下问题:

1) 使用 CLI 命令(出于自动化目的)在几次尝试部署新任务失败后,有没有办法指示 Fargate 自动停止当前部署?

2) 使用 CLI 命令,有没有办法监控部署的当前状态?例如,当对 Docker swarm 上的服务进行服务更新时,终端会在更新过程中生成实时日志

3) 部署失败后,Fargate 是否有办法发出错误代码、标志或消息?

【问题讨论】:

  • 1) 不知道。 2) 我监控 Fargate 的方式是 CloudWatch 日志 3) 在部署失败时,AWS HealthCheck 会失败,不是吗?这将显示在 CloudWatch 日志中。

标签: amazon-web-services continuous-deployment amazon-ecs aws-fargate


【解决方案1】:

到目前为止,您有办法做到这一点:

aws ecs wait services-stable --cluster MyCluster --services MyService

上一个示例只有在确认集群上运行的服务稳定后才会暂停并继续。在 40 次检查失败后将返回 255 退出代码。

要取消部署,请在创建服务时启用 ECS 断路器:

aws ecs create-service \
     --service-name MyService \
     --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \
     {...}

参考资料:

【讨论】:

    【解决方案2】:

    目前,ECS 不直接提供部署状态。发布部署后,除了不断轮询更新直到您有足够的信息可以从中推断出来,没有其他方法可以确定其状态。加上unexpected container exits 没有在任何地方记录。您必须搜索失败的任务。我获取它们的方式是通过 cloudwatch 规则在任务状态更改时触发 lambda。

    我推荐你阅读:https://medium.com/@aaron.kaz.music/monitoring-the-health-of-ecs-service-deployments-baeea41ae737

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 1970-01-01
      • 2019-04-28
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2022-11-04
      相关资源
      最近更新 更多