gpt4 book ai didi

amazon-web-services - AWS ECS 长时间运行的作业扩展

转载 作者:行者123 更新时间:2023-12-01 22:16:26 25 4
gpt4 key购买 nike

我在 ECS 中的容器上运行了长时间运行的作业。当自动缩放触发缩放时,有没有办法告诉 ECS 在 X 时间内(或直到触发事件)不要终止任务,以便作业可以完成然后终止?

假设我在 10 个实例上有 10 个容器,其中 3 个正在运行作业,我希望 ECS 不终止这些实例,并只考虑剩余 7 个实例的规模。 ECS支持这样的东西吗?

最佳答案

在扩展时,无法向 ECS 发出信号,表明应该跳过这 10 个任务中的这个特定任务。

但是,如果您的目标是不中断正在运行的任务,并让任务有机会完成,那么您可以使用基本的 Unix 原始概念来完成此任务。当 ECS 缩减时,它会告诉 Docker 守护进程停止您的容器,并且 docker 守护进程会向您容器中运行的进程发送一个 sigterm 信号。

每种运行时语言都有一种方法来捕获此信号并添加自定义处理。如果您没有自定义处理,则默认处理是让您的进程立即停止,但如果您捕获 sigterm 信号,那么您可以改为完成工作然后退出。

例如,在 node.js 中,您可以这样做:

process.on('SIGTERM', function () {
server.close(function () {
process.exit(0);
});
});

此代码使进程保持打开状态,直到服务器关闭所有连接,然后进程才会退出。

或者,如果您的业务流程需要很长时间,您可以使用 Amazon Batch 之类的东西(基本上是 Amazon ECS 之上的高级服务,旨在在集群上运行长时间运行的任务池,响应触发事件)。

关于amazon-web-services - AWS ECS 长时间运行的作业扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45453726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com