gpt4 book ai didi

amazon-web-services - 使用 Auto Scaling 组、CloudFormation 和 CodeDeploy 进行蓝/绿部署

转载 作者:行者123 更新时间:2023-12-04 08:16:34 24 4
gpt4 key购买 nike

我尝试通过复制 AutoScalingGroup 来设置蓝/绿部署,但这会使 CloudFormation 堆栈与其原始资源分离,因为 CodeDeploy 创建新副本并删除原始副本。我从另一篇文章( https://forums.aws.amazon.com/thread.jspa?messageID=861085 )了解到 AWS 正在为此开发改进,但目前我正在尝试以下解决方法。任何想法都会非常有帮助。

CloudFormation 创建以下内容:

  • 弹性负载均衡器
  • 目标群体
  • AutoScalingGroup One(带有 LaunchConfiguration)
  • AutoScalingGroup 2(与 1 相同,但没有实例)
  • 部署 AutoScalingGroup One 修订版的 DeploymentGroup(具有 In-Place DeploymentStyle)

CloudFormation 完成后,我在控制台中手动执行以下操作:

  1. 我将创建的部署组更新为部署样式蓝/绿,并将其原始环境设置为 AutoScalingGroup One。
  2. 我向 AutoScalingGroup Two 添加一个实例
  3. 我在 CodeDeploy 中创建了一个部署。但是,这不起作用,因为当新实例附加到 AutoScalingGroup Two 时,它会立即添加到 TargetGroup 并且不会通过运行状况检查。

关于如何使用 CloudFormation 实现一组资源,使蓝绿部署变得简单,即单击 CodeDeploy 并且 CloudFormation 资源仍然保持不变,有什么想法吗?

最佳答案

关于您描述的最初问题,您是否尝试过健康检查宽限期?这应该可以防止您所描述的当实例到达目标组时运行状况检查失败的问题。

另一种方法(它有很多缺点)是调整 CloudFormation 模板,以补偿 CodeDeploy 替换蓝绿部署中的 ASG 时的行为。

  1. 在 ASG 模板中,创建一个名为“是/否”的参数“管理自动缩放组”。根据值创建有条件的 ASG该参数为“yes”。在ASG上设置删除策略保留,以便 CloudFormation 在以下情况下将组保留在适当位置:参数更改为“否”。
  2. 使用默认值"is"启动该组关于这个参数。
  3. 一旦实例运行正常,并且 CodeDeploy 已完成初始就地部署,您可以将 DeploymentGroup 更改为使用蓝绿,其中 CodeDeploy 将取代您的 ASG。
  4. 请务必更新 ASG 并将 ManageAutoScalingGroup 更改为“否”。 CloudFormation 将从堆栈中删除引用,但会将资源保留在原处。

这将为您提供通过 CodeDeploy 所需的一键部署,但请注意,它会带来一些成本:

  • CodeDeploy 不会复制 Auto Scaling 组的 TargetGroup 参数(如 https://forums.aws.amazon.com/thread.jspa?threadID=249406&tstart=0 中的其他人所述)。您应该能够巧妙地使用 CloudWatch 事件规则和 SSM 自动化来解决此问题,以便在 ALB 更改其状态时将实例标记为不正常。
  • CodeDeploy 生成的副本似乎相当不可靠。至少有一次,我看到我的 LaunchTemplate 版本重置为不正确的值。我还遇到过部署组丢失了它应该跟踪的 ASG 的情况。
  • 继续将模板中的更改应用到 ASG 很麻烦。 “刷新”组的过程是: 1) 恢复前面描述的参数,以便 CloudFormation 将生成一个新组。 2) 修改部署组,以该组为目标,完成就地部署。 3) 修改部署组以恢复蓝绿部署并相应更新您的堆栈。

我对这个部门的 CodeDeploy 印象不太深刻。我很乐意看到它们以与 ASG 相同的方式工作,ASG 将在应用新的 LaunchTemplate 版本时替换自身。如果您感觉有点雄心勃勃,您可以通过利用带有 ASG 实例生命周期 Hook 的 Step Functions 来模仿此行为。这是我有时间时正在考虑的解决方案。

关于amazon-web-services - 使用 Auto Scaling 组、CloudFormation 和 CodeDeploy 进行蓝/绿部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com