2017-08-15 16 views
6

私はElasticBeanstalk環境にコードを配備しようとしました。毎回、このブランチを環境EBに展開しようとすると、EBはすべてのインスタンス、ELB、RDSなどを強制終了し、再構築しようとしますが失敗します。これにより、RDSは削除されますが、セキュリティグループまたはENIは削除されないため、環境は悪い状態になります。セキュリティグループを手動で削除しようとすると、依存オブジェクトが存在するということに失敗します。ENIを削除できません - 既に削除されたRDS

私はそれをネットワークインターフェイスに戻しましたが、切り離そうとすると(強制的に切り離しても)私は許可がないというエラーが表示されます。このENIはRDSインスタンスで削除されているはずですが、それは削除されていませんでした。今は環境を取り除くことができず、再構築できません。

EC2インスタンスがなくなると環境全体がすべての再作成を試みる理由がわかりませんが、負荷が戻ってきたらELBに追加されますが、ELBはヘルスチェックのため、常にアウトオブサービス状態になり、環境は死んでしまいます。このアプリケーションで環境がクラッシュする原因についてログを何とか見ることができればうれしいです。

ElasticBeanstalkを削除すると、RDSを含むすべてのインスタンスを削除することができます。これは、プロダクションにデプロイされたことはもちろんのこと、すべての本番データを消去することはできません。

展開中に何が起こっているのか、なぜこれが起こっているのかを確認する方法はありますか?

+0

EBは、展開中に環境を終了させるべきではありません。 EBコンソールの[イベント]タブで何か異常なことがありますか?自動スケーリングルールがインスタンスをトリガーして終了させるのでしょうか? – Brian

+0

これはログです。展開中に発生したすべてが、環境に失敗することがあります。新しく作成されたec2インスタンスは、何らかの奇妙な理由でELBによってOutOfServiceであるとみなされるためです。これは、環境をゼロから再構築しても、すべての展開で発生します。 https://paste.laravel.io/LKLzq 現在、私は手動で終了しようとしたために環境が固着していました。終了プロセスがすでにRDSインスタンスを削除したため、ENIを手動で削除することはできません。 –

+0

これは、デプロイメントが失敗し、新しいインスタンスが初期化された後に環境を再構築しようとしたときのログですELB https://paste.laravel.io/KLoRwと通信するENIのためにセキュリティグループを削除することはできません。すでに削除されているRDSのためにENIを切り離すことはできません。 –

答えて

0

Elastic Beanstalkは、舞台裏でCloudFormationを使用します。正しいスタック(ログに従ってawseb-e-j5zfptidfe-stackのプレフィックスが付いている)を特定し、それらを削除するか、少なくともENIで削除することで、環境全体を削除することができます。

また、ElasticBeanstalk内から環境を削除する必要があります。これですべてがリセットされます。セキュリティグループのような依存スタックがある場合最良の解決策は、メッセージを読んで依存関係を判断し、最初にそれらをクリーンアップすることです。

RDSをエラスティックビーンストークスタックに含めることをお勧めします。これを個別に作成し、接続の詳細をスタックに渡します。 AWSはdetailed instructionsです。短い要約は次のようになります。

  1. がデータベース
  2. のセキュリティグループを作成します
  3. 追加あなたのEBスタックに環境変数としてデータベース接続paremetersを追加セキュリティグループ
  4. とRDSデータベースを作成します。 EC2セキュリティグループをデータベースへのトラフィックの許可されたソースとしてデータベースセキュリティグループに追加します。

最後に、インスタンスがスタック内で終了する理由を判断する必要があります。彼らは「健康的」になっていないようです。 Elastic Beanstalkの展開のためのオプションであるIgnore health checkを無効にします。

これは、EC2インスタンスが「不健全」とマークされた環境になるはずです。必要なツールを使用して、EC2インスタンスがhealth checksに正しく応答しない理由を診断し、問題を解決することができます。

EC2インスタンスがヘルスチェックに失敗する理由はたくさんあります。チェック自体が正しく構成されていないか、セキュリティグループが間違っている可能性があります。また、EC2インスタンス自体のサービスが応答していない可能性があります。

+0

私はあなたが述べたことに基づいてスタックを削除するように見ていきますが、終了しようとするたびにbeanstalkの中から環境を削除するのは失敗します。問題を引き起こしているものが見つかりました。セキュリティグループのイングレスルールを追加する設定ファイルです。そのファイルを削除しましたが、動作しているようです。私が使っていたファイルはここにありますが、なぜ失敗したのか分かりません。 https://github.com/FoxxMD/laravel-elasticbeanstalk-queue-worker/blob/master/src/.ebextensions/00supervisordIngress.config –

+0

@JosephCrawford、このファイルはリソース[AWSEBSecurityGroup]を作成します。このリソースは[既に存在しています](http ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-resources.html)。そのファイルがElasticBeanstalkスタックとマージされた場合、同じ名前の2つのリソースは未定義の動作になります。 –

関連する問題