6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【大トラブル|ピンチ 503 エラー】Amazon EC2 Auto Scaling でやってはいけない設定ミス

Last updated at Posted at 2020-08-21

概要

顔面蒼白、大トラブルを起こしてしまいました。
同じようなことを他の方にも起こされないようにメモとして残しておきます。

何があったか

  1. アラートが大量にでている、サイトに 503 エラーでサイトが開けない!

  2. な、何が起きているのか AWS コンソールから EC2 インスタンスを確認

    スクリーンショット 2020-08-21 20.03.03.png

  3. 恐怖!!!! インスタンスが起動しかけて、すぐに終了して、起動しかけて、すぐに終了して、、無限ループ。。。。深呼吸。落ち着こう(キャプチャ見て分かるとおり、スクロールバーが表示されて、隠れるぐらい terminated のインスタンスがいます)

  4. まず、急遽接続ができる状態にする最短の対策を考える

  5. EC2 Auto Scaling がなぜ、起動しては失敗するような挙動になっているか調べる

対応

4. 急遽接続ができる状態にする最短の対策を考える

そして、急遽、AMI からインスタンスを単独で立ち上げ、最新のソースコードを反映し、ALB にアタッチした

これでひとまず、接続ができない問題は免れた

ここでさらに落ち着いて対応をするためにコーヒーを飲みました (どうでもいい)

5. EC2 Auto Scaling がなぜ、起動しては失敗するような挙動になっているか調べる

まず色々簡略化した図だが以下のようなサーバ構成図となっている (EC2は最小2台の構成)

HN.png

まず、最初にSTATUSチェック faild となっているインスタンスが2台存在していた。
そこから、EC2 Auto Scaling がインスタンスを最小2台構成に戻そうと頑張りだした。

ただ、起動しては起動しきれずに、すぐに終了してを繰り返している。
これの原因を見るために、Auto Scaling グループ のアクティビティを確認したところ以下のようなログを大量に確認した

スクリーンショット 2020-08-21 20.48.15.png

Cancelled
Launching a new EC2 instance: i-xxxxx. Status Reason: Instance failed to complete user's Lifecycle Action: Lifecycle Action with token 8xxxxxx was abandoned: Lifecycle Action Completed with ABANDON Result

どうも Lifecycle Action が失敗しているようだ

Lifecycle Action で動いているのは最新のソースコードを反映するために、 CodeDeploy だ。
ログを見てみよう。

スクリーンショット 2020-07-29 11.53.27 (1).png

なんということでしょう。大量の失敗の嵐が。

もう個々のログの中身を少し詳しくみてみると。

スクリーンショット 2020-08-21 21.02.05.png

CodeDeploy の DownloadBundle イベントで UnKnownError

スクリーンショット 2020-08-21 21.02.19.png

さらに
The specified key does not exist.
と、表示されている。

CodeDeploy は以前デプロイした最新のソースコードを S3 から取ってくるのだが、存在しないよってことのようだ。

たしかに URL 開いたら、ソースコードファイルが S3 に存在しない。。。

スクリーンショット 2020-08-21 21.06.29.png

ちょっと待てよ。
俺、CodePipeline のソースコードの S3 のバケット、GitHub で管理しているから、30日前のソースコードなんていらないと、
ライフサイクルルールで削除するように設定していたぞ。。
このサイトでデプロイしたの2ヶ月以上前だし、それだー!!!

ということで、ライフサイクルルールを消して、オートスケーリンググループを作り直すことで解決。


ちなみに、同じファイル名で最新のソースコードをS3に配置すれば動くんじゃね?って試してみたところ

スクリーンショット 2020-08-21 21.11.20.png

etag が一致しませんとエラーがでました。その通りですね。ちゃんとバリデーションしていただいて素晴らしいです。

結論

トラブルが起きたときは コーヒーを飲む 、じゃなくて、ひとまず落ち着いて、考える。
Amazon EC2 Auto Scaling で Lifecycle Action に CodeDeploy を定義している場合は、S3 に保存されるソースコードはライフサイクルルールで削除しては駄目。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?