2017-06-21 7 views
0

私は、自動スケーリングが有効になっているElasticBeanstalk環境でホストされているTomcat 8にデプロイされるアプリケーションを持っています。アプリケーションでは、長時間実行されているジョブがあり、すべての変更をデータベースにコミットする必要があります。AWS自動スケーリングがEC2インスタンスを終了しているときに、Tomcatで長期実行タスクを終了するにはどうすればよいですか?

問題は、AWSが規模の拡大中にEC2インスタンスを強制終了し、一部のジョブが期待通りに終了しないことがあることです。デフォルトでは、AWSはわずか30秒待ってからTomcatプロセスを強制終了します。

私は既に/etc/tomcat8/tomcat8.confファイルを変更しました:パラメータSHUTDOWN_WAIT3600(デフォルトでは60)に変更しました。しかし、それは問題を解決しませんでした - インスタンス全体は20〜25分後に殺されます。

次に、.ebextensionsファイル(hereと記載されています)を介してライフサイクルフックを設定しようとしました。しかし、ライフサイクルフックが実際にインスタンスの終了を延期していることを承認できませんでした(まだAWSサポートからの回答を待っています)。

質問:オートスケーリンググループの拡張時にインスタンス終了を延期またはキャンセルするための「法的な」方法をご存知ですか?

私はそのような何かをしたい:

  • AWSは、自動スケーリンググループ
  • 自動スケーリンググループに拡大し始めは、EC2インスタンスにシャットダウン信号を送信
  • EC2インスタンスは、すべてのアクティブなプロセスを停止開始します
  • Tomcatプロセスは、かもしれない(シャットダウン信号を受信し、アクティブジョブを
  • を完成したアプリケーションは、ジョブ結果をコミットするまで待機しますAPI、および労働者 -
  • Tomcatプロセスは、2つの部分から成り終了
+0

これはハーフフルにすることができます:https://stackoverflow.com/questions/42348571/aws-scaling-in-termination-protection-for-ec2-container-service/42351705#42351705 – Mahdi

答えて

0

Elastic Beanstalkでで

  • EC2インスタンスを終了させる)にも60分かかります。 APIは自動スケーリングされているため、ダウンする可能性があります。労働者はより長く働くものです。あなたはSQSとそれらの間で通信することができます。それが彼らの設計方法です。

    システムを調整することができます。これはサービスとしてのプラットフォームなので、自動スケーリンググループを強制的に停止させることができます.minインスタンスをmaxに設定することで強制的に停止させることができます。また、ヘルスチェックをオフにすることもできます - それはまたインスタンスを殺すことができます...しかし、それはハッキング、後者がキックすることができます。

  • 関連する問題