首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化蓝色/绿色AWS部署?

如何优化蓝色/绿色AWS部署?
EN

DevOps用户
提问于 2018-08-02 16:57:00
回答 3查看 1.5K关注 0票数 3

我使用AWS代码部署完成了以下设置:

但是,从我远程推送git分支到部署完成的那一刻,大约需要7分钟。时间是这样细分的:

  • bitbucket部署:45秒
  • 提供一个新的EC2实例: 3:40分钟
  • 在替换实例上安装应用程序:40秒
  • 2分钟将流量从旧实例重路由到新实例*这是非常长的,如果是手动完成的话,它实际上需要10秒)
  • 17秒终止第二次实例

加在一起大约是7分钟。

我怎么才能优化这个?我想把它缩小到1分钟以下。

EN

回答 3

DevOps用户

回答已采纳

发布于 2018-08-06 14:06:45

从aws支持处得到了这个答案

你好,这里是AWS支持中心的安德鲁。我知道您想知道是否有一种方法可以加快代码部署,因为目前完成代码部署需要7分钟。如果需要的话请纠正我。在检查了链接和代码部署环境之后,我可以看到,可能会对涉及将流量从旧实例重路由到新实例的步骤进行调优,以尝试并减少整个部署时间。此外,使用不同的部署配置也可能有助于减少部署时间。为了减少执行蓝色/绿色部署所需的时间,请编辑弹性负载均衡器(ELB)上的健康检查。将健康检查间隔从30秒缩短到5秒,并将响应超时从20秒减少到默认的5秒1。这将减少ELB检查实例是否健康并准备好接收通信量所需的时间。另一个可能有助于减少部署所需时间的设置是部署配置,将部署配置从当前使用的“一次一次”设置为“一次性”。CodeDeploy将立即尝试部署到尽可能多的实例,如果应用程序成功部署到一个或多个实例,则应用程序状态将显示为成功。此配置还将重新路由放置组中的所有通信量到所有实例,如果成功地将通信量路由到至少一次实例2,则将成功。要将这个部署从7分钟减少到1分钟是很不可能的,因为EC2的启动是由CodeDeploy管理的,可能有办法手动提高EC2的启动时间,但使用CodeDeploy时情况并非如此。我希望您能找到有用的信息,如果您有任何其他问题或需要澄清以上任何问题,请让我知道,我很乐意帮助您注意,参考:1配置健康检查为您的经典负载均衡器-健康检查配置- https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html#health-check-configuration 2与部署配置在AWS CodeDeploy -预定义的部署配置为一个EC2/现场计算平台- https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html#deployment-configurations-predefined最佳问候,安德鲁诉亚马逊网络服务

票数 2
EN

DevOps用户

发布于 2018-08-02 22:07:54

bitbucket部署:45秒

这似乎是对的。不确定您的回购规模,但如果它是托管在您的地区以外,这是不寻常的。

bitbucket部署:45秒

又一次,似乎是对的。这里没有太多的优化空间。

提供一个新的ec2实例: 3:40分钟

您准备的实例大小是多少?您是否准备了一个或多个实例?显而易见的解决方案是使用就地部署与蓝绿色,但我认为额外的时间是值得的。如果这是为了生产/演出,我认为你很好。如果这是在测试环境中,并且您的目标是快速反馈,您可以考虑在成功的蓝绿色之后提供新的实例,这样,如果没有AMI更改,它们就可以立即安装。

在替换实例上安装应用程序:40秒

这里没什么要优化的

2分钟将流量从旧实例重路由到新实例*这是非常长的,如果是手动完成的话,它实际上需要10秒)

我猜这一步是执行额外的步骤,当您手动重路由流量时不执行这些步骤。CodeDeploy可能正在执行额外的检查,以确保连接正在耗尽,新连接在旧连接关闭之前建立,以及其他测试/检查。这可能是你最好的优化领域,但不是牺牲制衡。

17秒终止第二次实例

这里没什么要优化的。

摘要:我不认为尝试进一步优化您的部署是可行或值得的。在你的测试中,你需要付出的努力和牺牲的数量,以及在我看来,你可能节省的一两分钟的方法。我也不认为实现<1分钟部署是不可能的。这将平均每一步15到20秒,这将需要在您的部署策略中做出大量牺牲。

如果您的目标是为QA、代码测试、集成测试等进行快速迭代,并且您绝对希望进行1分钟以下的部署,那么我建议您创建一个具有精确部署的云形成堆栈,但跳过本地部署模型的蓝色/绿色部署模型除外。这样,您就可以快速看到代码的结果。然后,在其他测试环境或准备环境中测试之后,您应该在测试之后运行完整的套件蓝色/绿色部署。

票数 2
EN

DevOps用户

发布于 2018-08-11 09:04:58

根据在您的情况下更快部署的值,一些选项是:

  • 这显然需要花费一美元,但同样地,取决于快速部署到您的组织的价值,以及您希望每天执行的部署数量,这可能是值得的。
  • 使用用于最佳蓝绿部署的多组目标组。这仍然需要额外的集群容量和管道中的额外工作,但是您可以确保一旦经过测试,替换的一组任务都可以一次运行(并且是完全测试的)。
票数 0
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/4675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档