0

I have setup a HA architecture using Autoscaling, load balancer , code deploy.

I have a base-image through which autoscale launch any new instance. This base-image will get outdated with time and I may have to upgrade it.

My confusion is how can I provision this base AMI to install desire version of packages ? and How will I provision the already in-service instances ?

For-example - Currently my base AMI have php5.3 but if in future I need PHP5.5 then how can I provision in-service fleet of EC2 instances and as well as base AMI

I have Chef as provisioning server. So how should I proceed for above problem ?

4

2 回答 2

1

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

在自动伸缩场景中,这相对容易:更新自动伸缩组的启动配置以使用新的 AMI 并终止您要升级的所有实例。您可以通过逐个终止实例来进行滚动升级。

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

于 2016-02-27T07:07:14.550 回答
1

Autoscale 有一个称为启动配置的功能,其中包括传递用户数据的能力,该用户数据将在启动时执行。用户数据可以保存在启动配置中,以便您可以自动执行该过程。

我从未与 Chef 合作过,我确信有一种以 Chef 为中心的方式来做这件事,但快速而肮脏的方式是使用 userdata。

然后,您的用户数据脚本(即 BASH)将包含必要的 sudo apt-get remove / install 命令(假设是 Ubuntu 操作系统)。

这方面的文档在这里:

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]*

要求:否

于 2016-02-11T14:25:59.560 回答