最小任务数,ECS
Posted
技术标签:
【中文标题】最小任务数,ECS【英文标题】:Minimum Number of Tasks, ECS 【发布时间】:2019-03-28 06:14:05 【问题描述】:我想知道是否可以以任何方式更新此字段“最小任务数”(无论语言如何,如果在 lambda 中可用)
为什么?因为我与服务关联的平衡器有问题。
从 NodeJS SDK,我可以更改所需的任务字段,这很好,但是创建的任务被我在 Cloudwatch 中的警报停止。
我看到的是我必须更新这两个,这样它们就不会停止。
如何在我的集群服务中编辑这个字段?
【问题讨论】:
【参考方案1】:检查ApplicationAutoScaling 类。我不熟悉这个特定的 SDK,但应用程序自动缩放是在 boto3 和 awscli 中定义最小和最大任务的地方。
【讨论】:
Tx 你的回答帮助我修改我的应用程序,但我的应用程序不是“正常的”,最后我创建了两个 lambda,一个在 api 调用事件时禁用自动缩放警报,如果与某些数据匹配,第二个用一个 cron 启用警报。【参考方案2】:从link 获取参考,您必须分两步使用application auto-scaling boto3 client:
-
使用
register_scalable_target()
将您的ECS 服务创建为应用程序自动扩展目标,例如MinCapacity=3
和MaxCapacity=100
。此调用将返回可扩展的目标 ARN。
每天晚上再次致电register_scalable_target()
,MinCapacity=0,每个工作日早上再次致电MinCapacity=3
。
请参阅register_scalable_target() 文档,其中明确指出:
在你注册了一个可扩展的目标之后,你可以使用这个 更新其可扩展的最小值和最大值的操作 维度。
然后,您的自动缩放策略会将 DesiredCapacity 设置在 Min/MaxCapacity 边界内,其中 MinCapacity 将在工作时间从 0 更改为 3,并在下班后变回 0。
【讨论】:
这是所需的计数,而不是最小任务数 嘿 Stéphane,感谢您的评论和反对,当我第一次阅读这个问题时,我可能是在做白日梦。无论如何,我已经根据我的知识和谷歌搜索的结果编辑了答案【参考方案3】:要更新可扩展目标,请指定要更改的参数。包括标识可扩展目标的参数:资源 ID、可扩展维度和命名空间。此更新请求不会更改您未指定的任何参数。
https://docs.aws.amazon.com/sdk-for-go/api/service/applicationautoscaling/#ApplicationAutoScaling.RegisterScalableTarget
这个 golang 示例展示了如何更新 ECS 服务的最小任务数(最小容量):
import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/applicationautoscaling"
)
sess, _ := session.NewSession()
aas := applicationautoscaling.New(sess)
res, err := aas.RegisterScalableTarget(
&applicationautoscaling.RegisterScalableTargetInput
MinCapacity: aws.Int64(int64(5)),
ServiceNamespace: aws.String("ecs"),
ResourceId: aws.String("service/cluster_name/service_name"),
ScalableDimension: aws.String("ecs:service:DesiredCount"),
,
)
【讨论】:
以上是关于最小任务数,ECS的主要内容,如果未能解决你的问题,请参考以下文章