AWS 自动扩展组 AMI
Posted
技术标签:
【中文标题】AWS 自动扩展组 AMI【英文标题】:AWS auto-scaling group AMI 【发布时间】:2018-05-01 01:29:12 【问题描述】:我有四个使用 ELB 在 AWS 上运行的 EC2(API 服务器)实例,我想应用自动扩展组。据我了解,我首先应该为我正在运行的四个 EC2 实例之一创建一个 AMI,它会从我根据配置创建的 AMI 自动扩展。此时,我是否应该在推送新代码时重新创建 AMI,以便从最新版本向上扩展?
【问题讨论】:
【参考方案1】:是的,更新后的代码应该被烘焙到一个新的AMI 中,只要您修改代码,它就会被推送到 EC2(部署)。
另一种方法是使用docker image,这样您就可以使用相同的 AMI 并更新您的 docker 映像。
【讨论】:
【参考方案2】:你已经掌握了基础知识。
当您使用 Auto Scaling 组 (ASG) 时,您的 EC2 实例应该是无状态的。这意味着您不会将数据保存在实例上,而是将数据存储在其他地方,例如 RDS 或 S3。当 ASG 启动新实例时,您的 EC2 实例应该有一个脚本(例如在 EC2 用户数据中)来下载或复制新实例所需的任何数据。
如果您已经拥有良好的 EC2 实例配置和设置,请从其中一个 EC2 实例创建一个 AMI,作为 ASG 的新 AMI。
当您使用永久信息(例如新的 Windows 或 Linux 补丁、软件或应用程序更新等)修改您的实例时,您将创建一个新的 AMI 来替换以前的 AMI。
Auto Scaling Groups
【讨论】:
【参考方案3】:您无需在每次更改代码时都重新创建 AMI。事实上,您可以将 AWS CodeDeploy 与 Autoscaling 组一起使用,以便在每次创建新的 EC2 实例时部署您的最新代码。
这里有解释:https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group.html
【讨论】:
【参考方案4】:管理用于启动的 AMI 的选项不止一种;从完整的 AMI 到启动时配置的基本操作系统 AMI。各有优缺点。
在管理完整的 AMI 多年后,我们正在转向 AMI 构建管道方法 - 实例在首次启动时自行配置 - 将以更“持续集成”的方式管理 AMI 配置。
所以要回答您的问题,是的您可以使用预烘焙的 AMI 在您的自动扩展组中使用。但是这种方法限制了灵活性,并且可能会导致维护问题,尤其是在运行多个帐户和/或环境时。
来自AWS AMI Design:
AMI 设计选项属于部署简单性的范围 与部署灵活性有关。最简单的 AMI 完全出炉 并且专门用于部署完整的运行实例,包括 安装和配置所有必需的软件。然而,这 方法限制了灵活性,因为完全烘焙的 AMI 只能用于 部署单个实例或一组相同实例。最多 灵活的 AMI 之前仅包含最少的配置和软件 然后在首次启动时动态安装所需的软件包。这 方法以简单性换取灵活性,因为每个实例都必须是 正确引导,然后才能按预期运行。
正确的方法将考虑您的技能组合、AWS 经验和 DevOps 基础设施。
【讨论】:
以上是关于AWS 自动扩展组 AMI的主要内容,如果未能解决你的问题,请参考以下文章