web-dev-qa-db-ja.com

Amazon EC2は正常なシャットダウンで自動スケーリングしますか?

負荷の急増に対処するためにEC2自動スケーリングを使用することを検討しています。私たちのケースでは、SQSキューサイズに基づいてインスタンスをスケールアップし、キューサイズでスケールダウンして制御下に戻します。各SQSメッセージは、インスタンスを終了する前に完了する必要がある、長時間実行される可能性のあるジョブ(メッセージごとに最大20分)を定義します。

当社のソフトウェアはシャットダウンプロセスを適切に処理するため、Sudo service ourapp stopは、アプリが完了するのを待ってから戻ります。

私の質問;自動スケーリングがスケールダウンを開始すると、終了を発行します(これは明らかに電源ボタンを押すようなものです)、インスタンスが「電源オフ」になる前にアプリが完全に終了するのを待ちますか?

https://forums.aws.Amazon.com/message.jspa?messageID=180674 <-それと私が見つけた他の事柄は、そうではないことを示唆しているようです

32
danw

2014年半ばに、AWSは終了プロセスを完全に制御できる「ライフサイクルフック」を導入しました。

私たちの高レベルのダウンスケールプロセスは次のとおりです。

  • Auto ScalingはインスタンスIDとともにメッセージをSQSキューに送信します
  • コントローラアプリがメッセージをピックアップします
  • コントローラーアプリが「インスタンスの停止」リクエストを発行する
  • コントローラーアプリは、インスタンスの停止中にSQSメッセージを再度キューに入れます
  • コントローラーアプリはメッセージを再度取得し、インスタンスが停止したかどうかを確認します(またはメッセージを再度キューに入れて後で再試行します)。
  • コントローラーアプリは、終了時にAuto Scalingに「PROCEED」を通知します
  • コントローラーアプリがSQSキューからメッセージを削除します

詳細: http://docs.aws.Amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html

23
danw

最近のほとんどのAMIでは、マシンに「停止」(または「shutdown -h now」コマンド)と同等の機能が提供されているため、サービスは正常にシャットダウンされます。プログラムが起動/シャットダウンスクリプトで適切に動作する限り、大丈夫ですが、プログラムが終了するまでに20秒以上かかる場合、Amazonがインスタンスを完全に強制終了する場合があります。

自動スケーリングに関するAmazonの documentation は終了プロセスを指定していませんが、ec2に対するAWSの documentation は、終了プロセス中に発生することについて一般に含まれています-マシンには「shutdown」コマンドが与えられ、ほとんどのシステムのデフォルトのシャットダウン時間は30秒です。

25
Ian Wilson

自動スケーリングでreplaceunhealtyオプションを使用します。

参照: http://alestic.com/2011/11/ec2-schedule-instance

特に このコメント を参照してください。

3
Mahaboob Khan