我在AWS上使用ELB运行了四个EC2(API服务器)实例,我想应用自动缩放组。根据我的理解,我首先要创建一个运行的四个EC2实例之一的AMI,并根据配置自动扩展我创建的AMI。此时,我是否应该在推送新代码时重新创建AMI,以便从最新版本扩展它?
答案 0 :(得分:1)
管理您的AMI以启动时,有多个选项;从完整的AMI到在发布时配置的基本OS AMI。每个都有其优点和缺点。
经过多年管理全面烘焙的AMI后,我们正朝着AMI构建管道方法迈进 - 在第一次启动时自我配置的实例 - 将以更“持续集成”的方式管理AMI配置。
因此,要回答您的问题,是您可以使用预先烘焙的AMI在自动缩放组中使用。但是这种方法限制了灵活性,并且可能产生维护问题,特别是在运行多个帐户和/或环境时。
AMI设计选项属于简单的部署范围 与部署灵活性的关系。最简单的AMI完全烘焙 并且专门用于部署完整的运行实例,包括 安装和配置所有必需的软件。但是,这个 方法限制了灵活性,因为完全烘焙的AMI只能用于 部署单个实例或具有相同实例的服务器场。最多 灵活的AMI之前只包含最少的配置和软件 然后在首次启动时动态安装所需的包。这个 方法交易简单,因为每个实例都必须具有灵活性 在它可以按预期运行之前正确引导。
正确的方法将考虑您的技能,AWS体验和DevOps基础架构。
答案 1 :(得分:0)
是的,更新后的代码应该被添加到一个新的AMI中,只要你修改代码,它就会被推送到EC2(部署)。
另一种方法是使用docker image这种方式,您可以使用相同的AMI并更新您的泊坞窗图像。
答案 2 :(得分:0)
你已经掌握了基础知识。
使用Auto Scaling Groups(ASG)时,您的EC2实例应该是无状态的。这意味着您不会在实例上保留数据,而是将数据存储在其他位置,例如RDS或S3。当ASG启动新实例时,您的EC2实例应该有一个脚本(例如在EC2 Userdata中)来下载或复制新实例所需的任何数据。
如果您已经有一个好的EC2实例配置和设置,请从其中一个EC2实例创建一个AMI作为ASG的新AMI。
当您使用永久信息(例如,新的Windows或Linux补丁,软件或应用程序更新等)修改您的实例时,您将创建一个新的AMI来替换之前的AMI。
答案 3 :(得分:0)
每次进行代码更改时,都不需要重新创建AMI。实际上,您可以将AWS CodeDeploy与Autoscaling组一起使用,以便在每次创建新EC2实例时部署最新代码。
这里解释了:https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group.html