33

EC2 自動スケーリングを使用して、負荷のスパイクに対処することを検討しています。私たちの場合、SQS キューのサイズに基づいてインスタンスをスケールアップし、キューのサイズを元にスケールを下げたいと考えています。各 SQS メッセージは、インスタンスを終了する前に完了しなければならない長時間実行される可能性のあるジョブ (メッセージごとに最大 20 分) を定義します。

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

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

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

4

3 に答える 3

26

ほとんどの新しいAMIでは、サービスが正常にシャットダウンされるように、マシンに「halt」(または「shutdown-hnow」コマンド)と同等のコマンドが与えられます。プログラムがstartup / shutdownスクリプトで正常に動作する限り、次のようにする必要があります。大丈夫ですが、プログラムの終了に20秒以上かかる場合は、Amazonがインスタンスを完全に強制終了する可能性があります。

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

于 2012-06-28T02:26:11.767 に答える
25

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

当社の大まかなダウン スケール プロセスは次のとおりです。

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

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

于 2015-03-06T06:41:51.197 に答える
3

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

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

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

于 2012-10-15T15:05:06.833 に答える