如何加快AWS Fargate的部署?

Eag*_*eak 6 amazon-web-services amazon-ecs aws-fargate

从EC2集群实例迁移到AWS Fargate之后,我意识到部署需要花费更长的时间。在他们花1-2分钟之前,现在一些破烂需要5分钟。这篇文章声称他们在Fargate上的部署甚至可能需要10分钟。

有人知道一种加快速度的方法吗?我找不到有关此主题的任何文档。

cyn*_*joy 8

以下是我在研究使用 ECS Fargate 缩短部署时间的选项时发现的任务细分和可能的改进:

Fargate 部署概述

以下是归因于部署持续时间的幕后情况的细分:

  • 预配 Fargate 工作器实例
  • 提供/附加 ENI
  • 下载 Docker 镜像
    • 在这里,您有改进的机会:
      • 减小 Docker 镜像的大小
      • 网络吞吐量基于 Fargate 任务的 CPU 分配 - 如果您分配更多的 CPU,那么您将获得更多的网络,并且图像下载速度会更快
  • 应用程序启动时间
    • 如果您的应用程序需要健康检查宽限期,则成为一个因素,同样受 CPU 分配的影响

如果您的任务与负载均衡器相关联,则部署还需要通过运行状况检查,您需要考虑:

  • 负载均衡器注销延迟
  • 通过健康检查:(健康检查间隔*阈值)

如何更快地部署 Fargate 任务更新

  • 过度分配 CPU
  • 减少注销延迟
  • 设置健康检查阈值为2,间隔为5秒
    • 如果您的应用需要,请不要忘记考虑运行状况检查宽限期

我的结果

在我的测试期间,我能够部署我的应用程序,通常需要大约 8 分钟(使用 1024 个 CPU(1vCPU))在不到 4 分钟(使用 4096 个 CPU(4vCPU))

免责声明

可能您的任务通常需要相当少的 CPU,并且您不想总是为过度分配 CPU 付出代价。因此,使用过度分配的资源运行您的部署,然后使用原始 CPU 分配立即运行另一个部署。

可能不是您想用于每个部署的解决方案,但可能是修补程序部署的解决方案。


Eag*_*eak 7

通过进一步的谷歌搜索,我发现了这个Reddit线程。一位AWS员工写道:

关于供应和启动容器的时间,使用Fargate肯定会更长。将来,我们可能会缩短配置状态的时间,但是与您自己的托管主机上的ECS相比,Fargate的幕后工作更多。当您自我管理主机时,它们已经启动并正在运行,甚至可能已经在本地下载并缓存了docker映像,因此ECS能够非常快速地启动容器。Fargate并非如此。

因此缩小图像应该会有所帮助。但总的来说,我想我必须忍受它,并希望在AWS方面进行优化。