Auto Scalingでgraceful shutdownする方法

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Auto Scalingでgraceful shutdownする方法

okapies
はじめまして、岡本と申します。
一点、皆様にお伺いしたいことがあります。

AWSクラウドデザインパターンの「Job Observer」パターンを実施する際に、
仕事量が減ってきたらAuto Scalingでスケールダウンさせたいとします。

http://aws.clouddesignpattern.org/index.php/CDP:Job_Observer%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

この際、ジョブを実行中のインスタンスが削減対象になった時に、
ジョブの完了を待って終了(graceful shutdown)させたい場合、
何かベストプラクティスはあるのでしょうか。

一つの方法としては、インスタンスがAuto Scalingにterminateされる際に、
ジョブの完了まで終了をブロックする方法があると思います。

しかし、terminateの実行から10分間経つと、EC2がインスタンスを強制削除
するという記述を見かけたので、この方法だと、残り時間が10分以上残ってい
るジョブを正常に完了させることができないということになります。

もし、適切な手法をご存知の方がいらっしゃいましたらご教示頂ければ幸いです。
よろしくお願いします。
Reply | Threaded
Open this post in threaded view
|

Re: Auto Scalingでgraceful shutdownする方法

armaniacs
しかし、terminateの実行から10分間経つと、EC2がインスタンスを強制削除
するという記述を見かけたので、この方法だと、残り時間が10分以上残ってい
るジョブを正常に完了させることができないということになります。

もし、適切な手法をご存知の方がいらっしゃいましたらご教示頂ければ幸いです。
よろしくお願いします。
* ジョブが30分かかるとわかっているならば、SQSスタックの数に30分変化がなかったらterminate
* terminateはautoscaleでは行わない。自殺するようにする。自殺の条件はジョブ処理がないことにする

Reply | Threaded
Open this post in threaded view
|

Re: Auto Scalingでgraceful shutdownする方法

okapies
ご返答ありがとうございました。

ご意見を参考に色々と考えてみたのですが、あらゆるユースケースに対応できる方法は現段階ではないのかな、という結論になりました。
究極的には「マイAuto Scaling」を開発・運用するしかないと思われますが、それはそれで本末転倒でしょうし。

とりあえずは「自殺」を基本に、私のユースケースに合った方法を考えてみたいと思います。