如何更新AWS自动缩放启动的新实例?

时间:2015-07-18 14:57:43

标签: amazon-web-services cloud autoscaling aws-opsworks

我们使用AWS cloudformation服务初始化我们的堆栈,并设置自动扩展服务,以便在负载上升时启动新的应用服务器。

我的理解是Auto Scaling只能将预定义的AMI作为新实例启动。这些实例可能与其他正在运行的实例不同,因为我们可能已更新在这些实例上部署的包/源代码。

如何让新实例更新? 我是否应该在每次向正在运行的实例部署新内容时更新AMI?或者在自动缩放时是否还要在新实例(Opsworks)上触发自动部署?

我是AWS新手,如果我的问题很简陋,请原谅我。

2 个答案:

答案 0 :(得分:7)

有多种方法可以做到这一点。我首选的方法是永远不要直接触摸服务器,而是每当我部署新版本的软件时创建一个新的AMI。

为此,请将AutoScalingRollingUpdate属性用于自动缩放组。然后,当您为启动配置更改ImageId时,AWS将自动将旧服务器替换为新服务器作为滚动升级。

我有一个简单的部署脚本,可以创建一个新的AMI,替换模板中的ImageId,然后进行堆栈更新 - AWS负责其余部分。

答案 1 :(得分:5)

从Beanstalk创建EC2实例时,它会根据指定的环境选择自动创建AutoScaling组并启动配置。从基础AMI创建实例是使用自定义代码调用用户数据完成的,其中包括用于创建文件夹和安装相关软件的shell脚本。

您可以在开始新实例之前在其中添加新的shell脚本或命令来执行自定义工作。这样就简单多了。 e.g。您可以在启动实例之前运行yum update

查找用户数据部分 转到EC2控制台 - >转到启动配置部分(左侧) - >选择正确的启动配置并将其复制 - >点击查看用户数据 - >根据需要添加脚本和命令 - >修改相关的Auto Scaling组以指向新的启动配置