aws - 升级自动缩放基础 AMI

aws - upgrade autoscale base AMI

我已经使用 Autoscalingload balancercode deploy 设置了 HA 架构。

我有一个 base-imageautoscale 可以通过它启动任何新实例。这个 base-image 会随着时间的推移而过时,我可能不得不升级它。

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

例如 - 目前我的 base AMIphp5.3 但如果将来我需要 PHP5.5 那么我如何提供 in-service 机队 EC2 instances以及 base AMI

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

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

我从未与 Chef 合作过,我确信有一种以 Chef 为中心的方法可以做到这一点,但快速而肮脏的方法是使用用户数据。

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

相关文档在此处:

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

UserData The user data to make available to the launched EC2 instances. For more information, see Instance Metadata and User Data in the Amazon Elastic Compute Cloud User Guide.

At this time, launch configurations don't support compressed (zipped) user data files.

Type: String

Length constraints: Minimum length of 0. Maximum length of 21847.

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

Required: No

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

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

当您的自动缩放组频繁扩展和缩减并且您可以在自动缩放组中拥有多个版本的 AMI 时,您可以只更新启动配置并等待。每次启动自动缩放过程并启动新实例时,都会使用新的 AMI。当 autoscaling group 有权限 'termination policy'(例如 "OldestInstance")时,每次 autoscaling 进程缩减时,一个实例 运行 旧的 AMI 将被终止。 因此,假设您有 4 个实例 运行。您更新启动配置以使用新的 AMI。经过 4 次放大操作和 4 次缩小操作后,所有实例都是 运行 新 AMI。