負荷の急増に対処するためにEC2自動スケーリングを使用することを検討しています。私たちのケースでは、SQSキューサイズに基づいてインスタンスをスケールアップし、キューサイズでスケールダウンして制御下に戻します。各SQSメッセージは、インスタンスを終了する前に完了する必要がある、長時間実行される可能性のあるジョブ(メッセージごとに最大20分)を定義します。
当社のソフトウェアはシャットダウンプロセスを適切に処理するため、Sudo service ourapp stop
は、アプリが完了するのを待ってから戻ります。
私の質問;自動スケーリングがスケールダウンを開始すると、終了を発行します(これは明らかに電源ボタンを押すようなものです)、インスタンスが「電源オフ」になる前にアプリが完全に終了するのを待ちますか?
https://forums.aws.Amazon.com/message.jspa?messageID=180674 <-それと私が見つけた他の事柄は、そうではないことを示唆しているようです
2014年半ばに、AWSは終了プロセスを完全に制御できる「ライフサイクルフック」を導入しました。
私たちの高レベルのダウンスケールプロセスは次のとおりです。
詳細: http://docs.aws.Amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html
最近のほとんどのAMIでは、マシンに「停止」(または「shutdown -h now」コマンド)と同等の機能が提供されているため、サービスは正常にシャットダウンされます。プログラムが起動/シャットダウンスクリプトで適切に動作する限り、大丈夫ですが、プログラムが終了するまでに20秒以上かかる場合、Amazonがインスタンスを完全に強制終了する場合があります。
自動スケーリングに関するAmazonの documentation は終了プロセスを指定していませんが、ec2に対するAWSの documentation は、終了プロセス中に発生することについて一般に含まれています-マシンには「shutdown」コマンドが与えられ、ほとんどのシステムのデフォルトのシャットダウン時間は30秒です。
自動スケーリングでreplaceunhealtyオプションを使用します。
参照: http://alestic.com/2011/11/ec2-schedule-instance
特に このコメント を参照してください。