delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

DjangoをEC2インスタンス上で動かす環境を構築する(その9:EC2をALBに組み込んでみる。)

手順

ALBの作成

ロードバランサーの種類の選択」画面に移動する。
EC2 > ロードバランシング > ロードバランサー > ロードバランサーの作成
「Application Load Balancer」を選択する。

・「ロードバランサーの種類の選択」画面で「Application Load Balancer」を選択する。
f:id:kamatimaru:20200528041828p:plain

手順 1 ロードバランサーの設定

以下のように設定する。

アベイラビリティーゾーンに関しては

ロードバランサーの可用性を高めるには、2 つ以上のアベイラビリティーゾーンからサブネットを指定する必要があります。

と画面にも注意書きがあるように、マルチAZで設定する。

f:id:kamatimaru:20200528080415p:plain

手順 2: セキュリティ設定の構成

ロードバランサープロトコル」にHTTPSを使用していないので

ロードバランサーのセキュリティを向上させましょう。ロードバランサーは、いずれのセキュアリスナーも使用していません。

という警告が表示されるが、今回は無視して次に進む。

手順 3: セキュリティグループの設定

以下のセキュリティグループを新規で作成する。

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 80 マイIP

f:id:kamatimaru:20200528081606p:plain

手順 4: ルーティングの設定

以下のように設定する。

  • ターゲットグループ
    • ターゲットグループ: 新しいターゲットグループ
    • 名前: 任意の名前
    • ターゲットの種類: インスタンス
    • プロトコル: HTTP
    • ポート: 10080
  • ヘルスチェック
  • ヘルスチェックの詳細設定
    • デフォルト通り

f:id:kamatimaru:20200528082222p:plain

手順 5: ターゲットの登録

・登録済みターゲット
→ 何も設定しない。

インスタンス
起動中のEC2インスタンスが表示されるので、該当のEC2インスタンスをチェックして、「登録済みに追加」を押す。

f:id:kamatimaru:20200528082532p:plain

手順 6: 確認

「作成」を押す。

f:id:kamatimaru:20200528082837p:plain

EC2インスタンスのセキュリティグループ変更

EC2インスタンスのセキュリティグループのインバウンドを

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 10080 マイIP

から

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 10080 ALBに割り当てたセキュリティグループ

に変更する。

※「ソース」蘭にセキュリティグループのID、もしくは「Name」タグ名の先頭何文字かを入力すると、候補が表示される。

確認

ヘルスチェックがEC2インスタンスに到達していることの確認

EC2インスタンスsshログインして、ヘルスチェックがEC2インスタンスに到達していること、及び200を返していることを確認する。

$ tail -f /var/log/nginx/access.log | grep "ELB-HealthChecker"
172.31.28.154 - - [27/May/2020:23:56:23 +0000] "GET /polls/ HTTP/1.1" 200 109 "-" "ELB-HealthChecker/2.0" "-"
172.31.28.154 - - [27/May/2020:23:56:53 +0000] "GET /polls/ HTTP/1.1" 200 109 "-" "ELB-HealthChecker/2.0" "-"
ステータスが「healthy」になっていることの確認

ヘルスチェックが5回成功していることを確認したら、AWSマネージメントコンソールの「EC2 > ロードバランシング > ターゲットグループ」から、ステータスが「healthy」になっていることを確認する。

f:id:kamatimaru:20200528090238p:plain

ブラウザから確認する。

以下のURLにアクセスする。

http://${ALBのドメイン}/admin

→ 正常に表示できた。

f:id:kamatimaru:20200528095438p:plain

以上で「その9:静的コンテンツを配信できるようにする。」は完了。

DjangoをEC2インスタンス上で動かす環境を構築する」シリーズはこれで終了とする。