我已经完全理解了 AWS 中 Auto-Scaling 的概念。我唯一的问题是,在生产环境中启动配置将使用什么 AMI?
根据我的理解,应该使用现有实例的图像。假设我使用了现有实例的图像。
如果将来现有实例有任何变化怎么办?在这种情况下,我们必须更新 AMI。
是否有任何流程可以自动化此流程?
我已经完全理解了 AWS 中 Auto-Scaling 的概念。我唯一的问题是,在生产环境中启动配置将使用什么 AMI?
根据我的理解,应该使用现有实例的图像。假设我使用了现有实例的图像。
如果将来现有实例有任何变化怎么办?在这种情况下,我们必须更新 AMI。
是否有任何流程可以自动化此流程?
当您创建新的 AMI 并将其设置为新的启动配置(LC;LC 无法编辑)或新版本的启动模板 (LT) 时,您必须使用新的 LC/LT 更新 ASG 配置。
但是,默认情况下,ASG 不会使用新的 LC/LT 更新现有实例。只有 ASG 启动的新实例将具有新的 LC/LT,然后是新的 AMI。因此,您最终会得到 ASG,其中一部分实例运行旧 AMI,另一部分运行新 AMI。
您可以通过两种常用的方式处理此问题:
使用 CloudFormation 创建您的 LC/LT 和 ASG 并指定UpdatePolicy。更新策略将在 LC/LT 更改时触发,并且ASG 中的现有实例将根据您在策略中指定的规则进行更新。
执行ASG 的蓝/绿部署。优秀的AWS 白皮书中详细描述和解释了如何执行部署:
Auto Scaling 使用 AMI,它是您的实例的时间点快照。此后所做的任何更改都不会应用于 AMI。
如果您想对基本映像进行任何更改,您将需要重新创建一个映像并再次在您的启动配置/启动模板中推出它。
人们使用许多工具来配置 AMI 的实例配置,例如 Ansible、Chef 和 Puppet。
AWS 去年还推出了用于构建映像的自动化工具EC2 Image Builder
如需更多阅读内容,请查看黄金 ami 管道。