10
3

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 5 years have passed since last update.

AWS CodeDeployでいつまでも「AllowTraffic」が終わらなかった原因

Posted at

株式会社NoSchoolでCTOをしている@mejilebenです。
今日はCodeDeployでハマったところとして、「AllowTraffic」が終わらなかったときの原因を残しておきます。

起こったこと

CodeDeployでデプロイしているとき、下記のようにデプロイの段階ごとにイベントが発生していて、その進捗をコンソールから見ることができます。
スクリーンショット 2019-03-29 18.39.26.png

下から2番めに「AllowTraffic」というのがありますが、ここのイベントで急に動作が止まり、それまでのイベントで合計しても10分程度で進んできたのに、1時間弱待っても進まないということが起きました。

原因を見つけたやり方

CodeDeployのデプロイ先がELBだったので、ロードバランサのターゲットグループを見に行きました。

スクリーンショット 2019-03-29 18.43.14.png

この画像ではステータスが「healthy」になってますが、このときは両方共「unhealthy」となっており、(i)をマウスでホバーするとステータスが「401」であることが読み取れました。

ELBのバックエンドのEC2が401になっている原因

今回はEC2にNginxを利用してBasic認証を掛けていたのが原因でした。

Basic認証を掛けていたのでヘルスチェックが通らなくて、結果的にデプロイ後のトラフィックを通すところで詰んでいたというわけです。

開発中だったので、すっかりヘルスチェックの遷移を見ていませんでした。

応急処置としてBasic認証を外すことで事なきを得ました(今はとりあえず2台構成で組んでいます)。

ターゲットグループのヘルスチェックはその後見事に改善しました。
スクリーンショット 2019-03-29 18.47.43.png

同時に、デプロイもさくっと終わりました。
スクリーンショット 2019-03-29 17.27.42.png

検討課題

Nginxを利用しているので、特定のパスに対してBasic認証外に逃がしてあげて、ヘルスチェックの設定でそのパスを向くようにすると良いと思います。

で、それ以外のパスに対してはBasic認証をかければヘルスチェックを回避しつつアプリケーションにはBasic認証をかけることができます。

CodeDeployには他にも散々苦しめられたので、小出しで記事書いていきたいなと思っています。

最後に

僕が働いているNoSchoolでは仲間を募集中です!
創業期真っ只中、社員は僕と社長の2人きり(+副業メンバー3人)でEdTechを変えに行ってます!

興味あればお茶でもしましょう。Twitterからの連絡でも大歓迎です!
https://www.wantedly.com/companies/noschool

10
3
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
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?