Amazon web services AWS自动缩放组的最佳DevOps使用?
我一直在为AWS上托管的应用程序开发DevOps管道。我想对当前设置进行改进,但我不确定最好的方法。我目前的设置如下:Amazon web services AWS自动缩放组的最佳DevOps使用?,amazon-web-services,continuous-deployment,devops,autoscaling,Amazon Web Services,Continuous Deployment,Devops,Autoscaling,我一直在为AWS上托管的应用程序开发DevOps管道。我想对当前设置进行改进,但我不确定最好的方法。我目前的设置如下: 易北河后的ASG 所需容量:1 最小容量:1 最大容量:1 代码部署过程: 移动可部署到S3 在ASG中终止实例 自动设置新实例 新实例拉下可部署的用户数据 此设置的问题是,从实例终止到新实例完全配置,环境处于关闭状态 我一直在思考如何改进此流程以消除停机时间,我提出了两种可能的解决方案: 解决方案#1: 易北河后的ASG 所需容量:1 最小容量:1 最大容量:2 代码
- 易北河后的ASG
- 所需容量:1
- 最小容量:1
- 最大容量:1
- 代码部署过程:
- 移动可部署到S3
- 在ASG中终止实例
- 自动设置新实例
- 新实例拉下可部署的用户数据
- 易北河后的ASG
- 所需容量:1
- 最小容量:1
- 最大容量:2
- 代码部署过程:
- 移动可部署到S3
- 将新实例启动到ASG中
- 新实例拉下可部署的用户数据
- 使用旧的可部署
- 易北河后的ASG
- 所需容量:2
- 最小容量:2
- 最大容量:2
- 代码部署过程:
- 移动可部署到S3
- 终止实例A
- 自动设置新实例A
- 实例A下拉新的可部署用户数据脚本
- 终止实例B
- 自动设置新实例B
- 实例B拉下新的可部署用户数据脚本
那么,哪一个更好:解决方案1、解决方案2,还是我还没有想到的其他解决方案?还有一个简短的免责声明:我知道我使用ASG的目的与预期目的不同,但这似乎是按照AWS的“EC2实例是牛”理念实现自动代码部署的最佳方式。即使这是DevOps管道,而不是生产环境,您所描述的内容听起来像是一个蓝色/绿色部署场景,您希望能够在环境之间切换,而无需停机。我认为最好的答案在很大程度上是针对您的需求的(我们不是100%知道),但是像这样的指南将有助于找到实现您的目标的最佳方式,无论是#1、#2还是其他方式。即使这是DevOps管道而不是生产环境,您所描述的内容听起来像是一个蓝色/绿色部署场景,您希望能够在环境之间切换,而无需停机。我认为最好的答案在很大程度上是针对您的需求的(我们不是100%知道),但是像这样的指南将有助于找到实现您的目标的最佳方式,无论是#1、#2还是其他方式。您正在寻找的术语是“零停机部署” 问题是,ASG似乎不支持手动调用它来启动新实例的简单操作。(它们仅在扩展策略需要时启动新实例。)您可以将现有实例附加到组,但这会导致所需的容量值增加,我不希望这样 如果您自己更改所需容量(例如通过API调用),自动缩放组将自动为您启动一个额外实例。例如,以下是一种为自动扩展组(ASG)实施零停机部署的简单方法:
- 使用定义ASG并指定执行零停机滚动部署的ASG
- 使用并使用
lifecycle属性定义ASG,以执行零停机(某种)蓝绿色部署create\u before\u destroy
- 使用并使用
关键字定义ASGserial
- 使用脚本
您可以进一步了解。您要寻找的术语是“零停机部署” 问题是,ASG似乎不支持手动调用它来启动新实例的简单操作。(它们仅在扩展策略需要时启动新实例。)您可以将现有实例附加到组,但这会导致所需的容量值增加,我不希望这样 如果您自己更改所需容量(例如通过API调用),自动缩放组将自动为您启动一个额外实例。例如,这里有一个实现零停机dep的简单方法