aws - 升级自动缩放基础AMI

时间:2016-02-11 14:17:10

标签: amazon-web-services amazon-s3 amazon-ec2 chef aws-code-deploy

我使用HAAutoscalingload balancer设置了code deploy架构。

我有base-image autoscale启动任何新实例。这个base-image会随着时间的推移而过时,我可能需要升级它。

我的困惑是如何配置此base AMI来安装所需的软件包版本?以及如何配置已经in-service个实例?

例如 - 目前我的base AMIphp5.3,但如果将来我需要PHP5.5,那么我该如何配置in-service EC2 instances队列以及base AMI

我有 Chef作为配置服务器。那么我该如何解决上述问题?

2 个答案:

答案 0 :(得分:1)

Autoscale有一个名为Launch Configuration的功能,它包含传入userdata的功能,该功能将在发布时执行。用户数据可以保存在启动配置中,以便您可以自动执行该过程。

我从未与Chef合作,我确信有一种以厨师为中心的方式,但快速而肮脏的方法是使用userdata。

您的userdata脚本(即BASH)将包含必要的sudo apt-get remove / install命令(假设是Ubuntu OS)。

此处的文档如下:

http://docs.aws.amazon.com/AutoScaling/latest/APIReference/API_CreateLaunchConfiguration.html

  

UserData用于启动的EC2的用户数据   实例。有关更多信息,请参阅实例元数据和用户数据   在Amazon Elastic Compute Cloud用户指南中。

     

此时,启动配置不支持压缩(压缩)   用户数据文件。

     

类型:字符串

     

长度限制:最小长度为0.最大长度为21847.

     

模式:[\ u0020- \ uD7FF \ uE000- \ uFFFD \ uD800 \ uDC00- \ uDBFF \ uDFFF \ r \ n \ t] *

     

必填:否

答案 1 :(得分:1)

实例使用的AMI是在实例引导时通过启动配置确定的。因此,更改实例的AMI的唯一方法是终止它并再次启动它。

在自动扩展方案中,这相对简单:更新自动扩展组的启动配置以使用新的AMI并终止要升级的所有实例。您可以通过逐个终止实例来进行滚动升级。

当您的自动扩展组经常向上和向下扩展时,您可以在自动扩展组中拥有多个版本的AMI,您只需更新启动配置并等待即可。每次启动自动调节过程并启动新实例时,都会使用新的AMI。当自动调节组具有正确的“终止策略”(例如,“OldestInstance”)时,每次自动调节过程缩小时,将终止运行旧AMI的实例。 所以,假设你有4个实例正在运行。您更新启动配置以使用新的AMI。在4个向上扩展操作和4个向下扩展操作之后,所有实例都在运行新的AMI。