当ASG容量由0->1转变时, ECS Service Task 创建是否触发?

0

【以下的问题经过翻译处理】 简而言之:如果ECS集群的ASG实例数量从0增加到1,那么Desired=1,Running=0的服务是否应该自动启动任务,还是需要通知或者通过探针探测到?

我有一个ECS EC2后备集群和一个EC2自动缩放组。ASG可以手动或通过某些警报缩小为零。当ASG缩小到零时,ECS会注意到并停止任务,从而导致Desired=1,Running=0。一切顺利。

如果我稍后将ASG扩展到Desired>0(例如,Desired=1)并启动实例,则这些实例会出现在ECS中。然而,它似乎没有触发ECS服务尝试启动任务,现在具备执行此操作的能力,并且期望值为Desired=1,Running=0。

这是预期的行为吗?是否需要以某种方式通知ECS服务,以便它注意到它现在具有部署任务的能力,如果是,则最好的通知方法是什么?

更新:我现在发现ECS将启动任务,但在ASG达到期望容量,新实例已启动并且ECS代理已向ECS注册之后会有一些显着的延迟-所有场合均超过10分钟。这是某种可调整的轮询还是实例预热安全性( instance-warm-up safety)?

profile picture
专家
已提问 10 个月前50 查看次数
1 回答
0

【以下的回答经过翻译处理】 您正在观察ECS的重试行为。如果ECS由于资源不足而无法启动服务中的任务,则ECS将重试调度任务,直到成功(或减少所需数量,从而消除调度替换任务的必要性)。

根据AWS最佳实践,ECS实现了指数退避算法。每次调度失败后,重试间隔会逐渐变长。因此,如果一个任务无法调度一段时间,您在添加新的容量后可能会遇到显著的延迟,直到任务重新调度。10-15分钟是最大重试间隔。

如果您有意终止EC2实例以节省成本,建议您在集群中将ECS服务的期望数量减少,以便它们都适合。如果您使用ECS的EC2自动缩放Capacity Provider,ECS将为您管理ASG的期望数量。或者,您可以使用Fargate,这是一种无服务器的方式,您只需支付正在活动运行的任务。

profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则