使用 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 <value> \ --launch-configuration-name <value> \ --min-size <value> --max-size <value>
使用这个我可以设置我知道的特定数量的实例。但是我如何在这些 ASG 中获取实例数量并在脚本中将其加倍?!。
您可以使用 describe-autoscaling 获取自动缩放参数获取 MinSize 和 MaxSize以上是关于使用 AWS CLI 或 Python 增加自动扩展组中的实例数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 配置 AWS EKS 自动扩缩器?