【AWS環境構築メモ⑦】ELBを作成する

## 0.はじめに

**ELBでロードバランサーを設置して、作成したEC2を配下に登録します。**

今回はEC2は1つしか作成していないですが、複数サーバーが設置されていることを想定して、ロードバランサーを作成します。

- **ELB(ロードバランサー)**
Elastic Load Balancingの略。
サービスにアクセスが集中すると、サーバーの処理能力が低下して、最悪ダウンしてしまいます。
その時に、サーバーへの負荷を分散させる役割を果たすのがロードバランサーの目的です。

![スクリーンショット 2022-03-27 19.49.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/f25bab1c-35b1-4464-f933-8a5b18a30f08.png)

## 1.前回の記事

**[【AWS環境構築メモ⑥】ACMでSSL証明書を発行する](https://qiita.com/yuuichimizuta/items/61f22085342430a69a32)**

## 2.前提条件

- **AWSアカウント作成済み**
- **リージョンはアジアパシフィック(東京) ap-northeast-1**
- **VPC作成済み**
- **セキュリティーグループ作成済み**
- **EC2インスタンス作成済み**
- **SSL証明書発行済み**

## 3.作成手順(サマリー)

|順番|手順|
|---|---|
|1|ターゲットグループの作成|
|2|ELB(ロードバランサー)の作成|
|3|リスナーの追加と編集|

## 4.作成手順

### 1.ターゲットグループの作成

**画面は英語表記です(なぜか)。**
**わからない場合は日本語に翻訳して操作してください**

![スクリーンショット 2022-03-27 20.28.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/8ae91b28-83c0-2a72-0f63-69e2ce363046.png)

- **サービスよりEC2を選択 → ターゲットグループ → [ターゲットグループを作成する]をクリックする**

![スクリーンショット 2022-03-27 20.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/9d41658a-cdc4-e467-db49-5b202b47d4eb.png)

**グループの詳細の指定**

- **ターゲットタイプの選択**
  - インスタンスを指定
- **ターゲットグループ名**
  - 任意のターゲットグループ名を入力(分かりやすいものがおすすめ)
- **プロトコル・ポートはHTTP : 80**

![スクリーンショット 2022-03-27 20.33.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/22e4f84a-0973-1792-c5f3-6cdab4d4d6fd.png)

- **VPC**
  - 対象のVPCを指定(作成したVPC)
- **プロトコルバージョン**
  - HTTP1
- **ヘルスチェック**
  - HTTP
- ヘルスチェックパス
  -  / を指定
- **[次へ]をクリックする**

![スクリーンショット 2022-03-27 20.33.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/ead2c8e0-cf79-1f6a-2a9e-32a9f6385f95.png)

- **対象のインスタンスを指定**
- **[保留中として以下を含める]をクリックする**
- **表示されたターゲットを確認して[ターゲットグループの作成]をクリック**

<font color="Green">**ターゲットグループが作成されました**</font>

### 2.ELB(ロードバランサー)の作成

![スクリーンショット 2022-03-27 23.40.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/4ae7323b-7a0a-153b-3d25-dbad2b4e4e5c.png)

- **EC2 → ロードバランサー → [ロードバランサーの作成]をクリックする**

![スクリーンショット 2022-03-27 23.40.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/c64a6df0-2ea8-bde0-39ce-bc926f39bd92.png)

- **Application Load Balancer の[作成]を選択**

![スクリーンショット 2022-03-27 23.43.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/06d07b01-0001-c963-8551-04cd77beca29.png)

- **ロードバランサー名**
  - 分かりやすい名前がおすすめ

![スクリーンショット 2022-03-27 23.43.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/6a347b2c-db56-1866-4096-8cfbbf457d65.png)

- **VPC**
  - 対象のVPCを選択(作成したVPC)
- **マッピング**
  - パブリックサブネット 1a, 1cを選択

![スクリーンショット 2022-03-27 23.56.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/4742cac1-175a-0ac8-f0d2-8b231bbfaa92.png)

- **セキュリティーグループ**
  - ELB用に作成したセキュリティーグループを指定
  - デフォルトのセキュリティーグループが指定されている場合は、[×]で削除しておく

![スクリーンショット 2022-03-27 23.56.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/dd7b62eb-7bd8-76fe-d477-c807b5865e81.png)

- **リスナーとルーティングの設定**
  - プロトコル : HTTP
  - ポート : 80
  - デフォルトアクション : 先程作成したターゲットグループを指定

![スクリーンショット 2022-03-27 23.58.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/e3486bce-f252-fd00-4f8b-df798ae8a235.png)

- **設定した内容を確認して[ロードバランサーの作成]をクリックする**

<font color="Green">**ELBが作成が完了しました**</font>

### 3.リスナーの追加と編集

**HTTPS化とHTTPでアクセスした際もHTTPSにリダイレクトするように設定します**

![スクリーンショット 2022-03-28 1.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/08a5e28b-b00e-32d7-8c85-76aa33800dc3.png)

**リスナーの追加(HTTPS)**

- **EC2　→ ロードバランサー → 作成したロードバランサーを選択**
- **[リスナー]を選択し、[リスナーの追加]をクリックする**

![スクリーンショット 2022-03-28 1.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/3468c56c-1a12-70c9-6288-96e615d08740.png)

**リスナーの追加**

- **プロトコル**
  - HTTPS : 443
- **[Add action] を選択**
  - Forward
- **ターゲットグループ**
  - 先程作成したターゲットグループを指定
- **セキュリティーポリシー**
  - ELBSecurityPolicy-2016-08
- **デフォルトのSSL証明書**
  - ACMから
  - ACMで発行したSSL証明書を指定
- **[追加]をクリックする**

![スクリーンショット 2022-03-28 1.06.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/790e8bcc-d6a3-bccd-c615-00cda6c593d2.png)

<font color="Green">**HTTPSリスナーを追加できました**</font>

![スクリーンショット 2022-03-28 1.06.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/6432fba5-68cc-fd05-193e-639ffa46aa1f.png)

**HTTP → HTTPSにリダイレクトするようにリスナールールを追加する**

- **HTTP : 80リスナーを選択**
- **[修正]をクリックする**

![スクリーンショット 2022-03-28 1.06.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/23c2b205-d551-5df1-d4f2-a5e89f5cd4c9.png)

- **[Add action]を選択**
  - Redirect
- **[Itemize URL]を選択**
- **プロトコル : ポート**
  - HTTPS : 443
- **[変更内容の保存]をクリックする**

<font color="Green">**リスナールールの追加完了しました**</font>

![スクリーンショット 2022-03-28 1.07.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/891391/981f87ba-6516-d6b1-d289-dcc1e7584e9d.png)

**一応ヘルスチェックの結果も見ておきます**

- **ターゲットグループを選択**
- **[Details]を選択**
- **画像では<font color="LimeGreen">Healthy</font>になっていますが、EC2とELB作成直後は<font color="Red">Unhealthy</font>だと思います。(インスタンスの/配下に何も無い状態なので)**
  - この後、EC2にnginxなどを導入していく過程で<font color="LimeGreen">Healthy</font>に変化します。

## 5.最後に

以上でELBの作成が完了しました。

私はこのタスク、ギブアップ寸前まで悩みまくっていました。
様々な記事や公式ドキュメントを見回したり、メンターの方にひたすら相談したり、
とにかく長い時間かけて作成しました。

まだまだ理解が浅いので、これからも学習を重ねていきたいです。

**次回はRoute53でAレコードのエイリアスを作成します**

**次回 : [【AWS環境構築メモ⑧】Route53でAレコードのエイリアスを作成する](https://qiita.com/yuuichimizuta/items/23ed28b7518cdd9a7801)**

## 6.参考

https://qiita.com/kobayashi-m42/items/9f6dd14ad1e4dc7cab4c

https://qiita.com/hiroshik1985/items/ffda3f2bdb71599783a3

https://catalog.us-east-1.prod.workshops.aws/workshops/47782ec0-8e8c-41e8-b873-9da91e822b36/ja-JP/hands-on/phase4