使用 AWS CLI 或 Python 增加自动扩展组中的实例数

Posted

技术标签:

【中文标题】使用 AWS CLI 或 Python 增加自动扩展组中的实例数【英文标题】:Increase the count of instances in an autoscaling group using AWS CLI or Python 【发布时间】:2017-10-06 03:47:07 【问题描述】:

我一直在尝试获取具有特定标签的自动缩放组列表。下面的脚本执行此操作。

#!/usr/bin/python

import boto3
import base64
import time

client = boto3.client('autoscaling', region_name='us-west-2')
paginator = client.get_paginator('describe_auto_scaling_groups')
page_iterator = paginator.paginate(
    PaginationConfig='PageSize': 100
)

filtered_asgs = page_iterator.search(
    'AutoScalingGroups[] | [?contains(Tags[?Key==``].Value, ``)]'.format(
        'Application', 'CCP')
)

for asg in filtered_asgs:
#    print asg['AutoScalingGroupName']

现在,我正在尝试将输出列表中每个 ASG 中的实例数加倍。我有一个带有新 AMI 的新 Launch 配置,并且我已经推送到此 ASG。现在,实例计数加倍将在此 ASG 中使用 new 和新 AMI 创建新实例。请建议如何将实例计数加倍..

【问题讨论】:

【参考方案1】:

首先,您必须为更新的 image-id 创建一个新的启动配置,因为您无法修改启动配置:

aws autoscaling create-launch-configuration \ 
--launch-configuration-name my-launch-config \ 
--image-id ami-c6169af6 --instance-type m1.medium 

然后将创建的启动配置附加到自动缩放

update-auto-scaling-group \
--auto-scaling-group-name <value> \ 
--launch-configuration-name <value> \
--min-size <value> --max-size <value>

这样做后,它会加倍。实例和所有新实例都将使用新图像。

但所有旧实例仍具有旧图像 ID,因此您必须在启动配置更新后删除这些实例。

一旦您删除实例,自动缩放将启动具有新图像 ID 的新实例。

这种进行更新的方法称为滚动更新。


其他方法是蓝绿色的方法

    创建一个新的启动配置 创建新的自动缩放组

一旦您的新堆栈准备就绪,请将其附加到您的 ELB 或您使用的任何方法,然后删除旧堆栈。

这两种方法都有自己的用例,具体取决于您的使用要求:

如果您希望所有实例始终同步,请使用第二种方法

【讨论】:

我已经编写了脚本以使用新的 AMI ID 创建新的 LC。没事儿。我坚持将新 ASG 中的实例数加倍。 update-auto-scaling-group \ --auto-scaling-group-name &lt;value&gt; \ --launch-configuration-name &lt;value&gt; \ --min-size &lt;value&gt; --max-size &lt;value&gt; 使用这个我可以设置我知道的特定数量的实例。但是我如何在这些 ASG 中获取实例数量并在脚本中将其加倍?!。 您可以使用 describe-autoscaling 获取自动缩放参数获取 MinSize 和 MaxSize

以上是关于使用 AWS CLI 或 Python 增加自动扩展组中的实例数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 配置 AWS EKS 自动扩缩器?

docker容器实现redis主从架构自动扩缩容

docker容器实现redis主从架构自动扩缩容

如何为 kops 在 AWS 上安装的 k8s 做集群自动扩缩器?

在 AWS 中制定自动缩放自己的规则

boto3或aws cli是否具有从实例创建模板?