2017-08-02 8 views
0

私はECSのコンテナで長時間実行されているジョブを実行しています。オートスケールトリガが拡大すると、Xの時間(またはイベントがトリガされるまで)タスクを強制終了しないようにECSに指示する方法があるので、ジョブは終了して終了するだけですか?AWS ECS長期実行ジョブの縮尺は

10個のインスタンスに10個のコンテナがあり、そのうち3個が現在ジョブを実行しているとします。残りの7個のインスタンスだけで、そのインスタンスを終了しないようにします。そのようなものはECSでサポートされていますか?

答えて

1

それはのスケーリングに来るとき10のうち、この特定のタスクをスキップする必要があることをECSに合図する方法はありません。

しかし、あなたの目標は、実行中のタスクを中断し、タスクを与えないのであればあなたがこれを達成するために基本的なUnixの基本概念を使用することができます。 ECSが縮小すると、Dockerデーモンはコンテナを停止するように指示し、dockerデーモンはコンテナ内で実行中のプロセスにsigtermシグナルを送信します。

すべてのランタイム言語には、この信号をトラップしてカスタム処理を追加する方法があります。カスタム処理がない場合のデフォルトの処理は、プロセスを即座に停止することですが、sigtermシグナルをトラップすると、作業を終了してから終了することができます。ここでNode.jsの中に例えば

は、あなたがそれを行う方法です:サーバーは、すべての接続を閉じただけにして、プロセスの終了がするまで

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

このコードは、オープンなプロセスを維持します。

また、ビジネスプロセスに時間がかかる場合は、Amazon Batch(基本的にAmazon ECS上で、クラスタ上で長時間実行されるタスクのプールを実行するように設計された上位サービス)を使用すると、トリガーイベントに応答して)。

+0

さて、私はこれがしなければならないと思います。徹底的な説明をありがとう。 – apines

関連する問題