BlockTraffic 和 AllowTraffic

BlockTraffic 和 AllowTraffic

我正在使用 AWS CodeDeploy 部署我的网站,我发现它的速度并不稳定;有时它非常快,但有时部署的每个步骤都需要几分钟。当部署应该快速完成时,如果出现错误或中断,这非常烦人。

不过,我找不到任何有关 CodeDeploy 速度的文档,而且我似乎找不到它何时慢或何时快的任何逻辑。有没有办法加快速度,有没有办法知道为什么花了这么长时间?

答案1

CodeDeploy 默认只执行很少的操作 - 它从 S3 或 Github 获取代码,然后运行你的根据appspec.yml文件的说明编写脚本。

如果您的部署从 S3 获取千兆字节的数据,您会发现数据传输需要一些时间(特别是在带宽有限的小型 EC2 实例上),但除此之外,部署延迟更可能是由于您在部署脚本中所做的任何操作造成的。

CodeDeploy 部署中的步骤如下:

  • ApplicationStop - 你控制这个钩子
  • DownloadBundle - CodeDeploy 从 S3/Github 获取代码
  • BeforeInstall - 你控制这个钩子
  • 安装 - CodeDeploy 将代码从临时位置复制到最终目标
  • AfterInstall - 你控制这个钩子
  • ApplicationStart-你控制这个钩子
  • ValidateService - 你控制这个钩子

粗体部分由 CodeDeploy 决定,其他部分由您决定。如果您在粗体部分中看到不同的延迟,请联系 AWS 支持,否则您可能需要调查您的挂钩。

答案2

BlockTraffic 和 AllowTraffic

只需调整目标群体的健康检查设置就可以节省几分钟。

在此处输入图片描述 在此处输入图片描述

在此处输入图片描述 在此处输入图片描述

解释

这是可行的,因为BlockTrafficAllowTraffic都等待成功的健康检查。默认的健康检查间隔是每 30 秒检查 1 次,一次成功的健康检查需要连续 5 次 200 次响应。因此,默认情况下需要超过 2 分 30 秒。这是针对每个 EC2 实例的。减少健康检查间隔并限制所需的成功检查次数将缩短部署时间。

答案3

另一个需要检查的设置是目标组的“取消注册延迟”。我的健康检查设置已经很低了,而这在我的案例中就是瓶颈。

答案4

不要在管道的 Code Deploy 部署组上启用负载均衡器,这样您将摆脱 BlockTraffic 和 AllowTraffic 步骤。

截屏

相关内容