signiant/ecs-cluster-scaledownecs-cluster-scaledown 是一款用于自动缩减ECS集群的工具,旨在解决单向扩容(仅允许扩容)场景下集群过度配置的问题。当ECS集群因长期运行任务(持续时间不确定,难以常规缩容)仅启用扩容时,易导致资源浪费。该工具通过自动化流程缩减集群规模,包括检查实例状态、按负载排序实例、将指定数量实例置为DRAINING状态并在满足条件时终止,从而优化资源利用率。
适用于以下场景:
| 参数 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
--cluster-name | ECS集群名称 | 是 | - |
--count | 缩减实例数量 | 否 | 1 |
--instance-ids | 需移除的实例ID列表(空格分隔) | 否 | - |
--ignore-list | 检查运行任务时忽略的任务列表(空格分隔) | 否 | - |
--alarm-name | 检查缩容前置条件的告警名称(仅告警状态为ALARM时执行) | 否 | - |
--region | 集群所在AWS区域 | 是 | - |
--profile | AWS CLI配置文件名称 | 否 | - |
--verbose | 开启DEBUG日志 | 否 | - |
--dryrun | 模拟操作,不实际变更集群 | 否 | - |
bashdocker pull signiant/ecs-cluster-scaledown
模拟缩减集群test-cluster中2个实例,不实际执行变更:
bashdocker run \ signiant/ecs-cluster-scaledown \ --cluster-name test-cluster \ --count 2 \ --region us-east-1 \ --dryrun
通过访问密钥认证,基于告警状态缩减1个实例(默认count=1):
bashdocker run \ -e AWS_ACCESS_KEY_ID=your_access_key \ -e AWS_SECRET_ACCESS_KEY=your_secret_key \ signiant/ecs-cluster-scaledown \ --cluster-name test-cluster \ --region us-east-1 \ --alarm-name "Cluster scale down alarm"
缩减时忽略LogspoutTask任务,仅当实例无其他运行任务时移除:
bashdocker run \ signiant/ecs-cluster-scaledown \ --cluster-name test-cluster \ --region us-east-1 \ --ignore-list LogspoutTask
移除指定ID的实例(需已处于DRAINING状态):
bashdocker run \ signiant/ecs-cluster-scaledown \ --cluster-name test-cluster \ --region us-east-1 \ --instance-ids i-0x1x2x3x4x5x6x7x8 i-0x2x3x4x5x6x7x8x9
指定count=0仅清除DRAINING状态实例,不额外缩减集群:
bashdocker run \ signiant/ecs-cluster-scaledown \ --cluster-name test-cluster \ --region us-east-1 \ --ignore-list LogspoutTask \ --count 0
--instance-ids时,实例必须已处于DRAINING状态,否则无法移除。--alarm-name时,工具会先检查告警状态是否为“ALARM”,非ALARM状态将直接退出。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务