AWS - 重建 Autoscale 组中的所有实例

Posted

技术标签:

【中文标题】AWS - 重建 Autoscale 组中的所有实例【英文标题】:AWS - Rebuild All Instances In Autoscale Group 【发布时间】:2017-10-14 17:03:47 【问题描述】:

我们正在寻找一种方法来触发自动缩放组中所有实例的滚动更新或重置,而无需更改 CloudFormation JSON 或启动配置用户数据。

我们尝试这样做的原因是我们的自动缩放组中有多个 JBoss 应用程序服务器。为了使这些服务器保持相当无状态,我们在 S3 上部署了可部署的战争,每当新服务器启动时,它就会抓取战争,然后部署它们。有时会更新我们需要部署到组中实例的战争文件。由于这些服务器总是抓取新文件,我们希望有一种方法让 AWS 删除所有内容然后重新构建。实际上,我们需要与自动缩放更新策略相同的行为,但我们可以通过 CloudFormation 或 CLI 运行它们,而无需更改任何 JSON 或用户数据。我们将可部署文件放在 S3 上的地方,无需更改 AMI 或任何与 JSON 或用户数据相关的内容。

我们正在寻找的行为的更新策略:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html

【问题讨论】:

【参考方案1】:

要更新您的 Auto Scaling 队列:

将Auto Scaling Termination Policy 设置为OldestInstance。 在 Auto Scaling 组中启动新实例。正如您所描述的,他们将使用您最新的war 文件。这可以通过增加 Auto Scaling 组上的 Desired 数量来完成。 新实例启动后,将Desired 数量减少回原来的水平。这将导致实例被终止,首先从最旧的实例开始。

这是一种在保持应用程序可访问性的同时向队列推出更新的巧妙方法。

【讨论】:

以上是关于AWS - 重建 Autoscale 组中的所有实例的主要内容,如果未能解决你的问题,请参考以下文章

如何为 AutoScale 实例使用 AWS 负载均衡器代理协议?

使用 boto 列出 Auto Scaling 组中的实例

Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null

具有私有 IP 的 AWS Gitlab Autoscale 运行器,不想启用公共 IP

Celery:AWS ECS Autoscale 缩减事件(如何不破坏长时间运行的任务?)

无法访问 AWS ECS EC2 实例中的端口