Amazon web services 如何加快AWS Fargate上的部署?

Amazon web services 如何加快AWS Fargate上的部署?,amazon-web-services,amazon-ecs,aws-fargate,Amazon Web Services,Amazon Ecs,Aws Fargate,从EC2集群实例迁移到AWS Fargate之后,我意识到部署需要更长的时间。以前需要1-2分钟,现在有些设备需要5分钟。声称他们在Fargate上的部署甚至需要10分钟 有人知道加快速度的方法吗?我找不到有关此主题的任何文档。根据我的经验,它们速度较慢的原因有两个: awsvpc网络模式将ENI附加到任务。当必须对Lambda执行此操作时,如果Lambda在VPC中运行,则会显著增加初始启动时间 Docker映像大小也会影响启动时间,因为要启动任务,通常需要将映像下载到任何隐藏的主机上。我已经

从EC2集群实例迁移到AWS Fargate之后,我意识到部署需要更长的时间。以前需要1-2分钟,现在有些设备需要5分钟。声称他们在Fargate上的部署甚至需要10分钟


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

根据我的经验,它们速度较慢的原因有两个:

  • awsvpc网络模式将ENI附加到任务。当必须对Lambda执行此操作时,如果Lambda在VPC中运行,则会显著增加初始启动时间

  • Docker映像大小也会影响启动时间,因为要启动任务,通常需要将映像下载到任何隐藏的主机上。我已经用一个小型200MB容器和一个2.5GB容器进行了一些基准测试。前者确实启动得更快


  • 你不能对awsvpc做太多,因为Fargate需要它。缩小这个图像将是你下一个最大的影响。

    通过进一步的谷歌搜索,我发现。一位AWS员工写道:

    关于提供和启动容器的时间,它是 使用Fargate时,时间肯定更长。我们可以缩短这条路的长度 在未来的供应状态下,Fargate正在做更多的工作 您可以在自己的自我管理主机上安装云服务器。当你自我管理的时候 它们已经启动并运行的主机,甚至可能已经有您的 docker镜像本地下载缓存,ECS可以启动 容器很快就打开了。法尔盖特的情况并非如此


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

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

    Fargate部署概述 下面是对部署持续时间的幕后工作的分解:

    • 提供Fargate worker实例
    • 提供/附上ENI
    • 下载Docker映像
      • 在这里,您有改进的机会:
        • 减小Docker图像的大小
        • 网络吞吐量取决于Fargate任务的CPU分配-如果分配更多的CPU,则可以获得更多的网络,并且映像下载速度更快
    • 应用程序启动时间
      • 如果应用程序需要运行状况检查宽限期(同样受CPU分配的影响),则会成为一个因素
    如果您的任务与负载平衡器关联,则部署还需要通过运行状况检查,并且您需要考虑:

    • 负载平衡器注销延迟
    • 通过健康检查:(健康检查间隔*阈值)
    如何更快地部署Fargate任务更新
    • 过度分配CPU
    • 减少注销延迟
    • 将运行状况检查阈值设置为2,间隔设置为5秒
      • 如果你的应用程序需要健康检查宽限期,别忘了考虑它
    我的结果 在我的测试过程中,我能够部署我的应用程序,通常需要8分钟的时间(使用1024个CPU(1vCPU))和不到4分钟的时间(使用4096个CPU(4vCPU))

    免责声明 可能您的任务通常需要相当少的CPU,并且您不希望总是为过度分配CPU而付费。因此,使用过度分配的资源运行部署,然后使用原始CPU分配运行另一个部署


    可能不是每次部署都要使用的解决方案,但也可能是修补程序部署的解决方案。

    您实际如何衡量时间?过去,我在控制台中查看服务事件时大吃一惊,但我认为有更好的方法吗?我们在每次部署后都会运行一个脚本,以检查ECS部署是否已经完成。它测量时间,以便在部署时间过长时使管道失败。