最小任务数,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=3MaxCapacity=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的主要内容,如果未能解决你的问题,请参考以下文章

Amazon ECS 中的最小健康百分比和最大百分比是多少

如何使用 SDK 为 ecs 服务的弹性伸缩策略设置最小和最大任务?

ECS 任务为啥不扩容?

我可以暂停 ECS 服务而不是删除它吗?

AWS ECS 容量提供商

ECS 任务能否调用 lambda?