Elastic Load Balancing の概要とロードバランサーの作成手順

「ELBってよくわからんけど、とりあえず作ってみたいな」という方向けの記事です。

#ELBとは？
ELB ＝ Elastic Load Balancing
AWS上で稼働するロードバランサーサービスです。

主に以下2つの機能があります。
1. 複数サーバーによる冗長構成を構築する
2. それらのサーバーに対して負荷分散・スケールを行う

# ELBがあると何がうれしいのか
- バックエンドにあるEC2インスタンスのリクエスト数やコネクション数が均等になるように負荷分散してくれる
- ELB自体も負荷に応じて自動でスケールしてくれる

![aws-elb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/7a696122-5842-2122-0d57-e2dacc788ed2.png)

# ELBの種類
- ALB (Application Load Balancer)： L7 (アプリケーション層)  で負荷分散するやつ
- NLB (Network Load Balancer)： L4 (トランスポート層)  で負荷分散するやつ
- CLB (Classic Load Balancer)： 昔使われていたやつ。今となっては特殊なケースだけ使う。（例：[EC2-Classicネットワーク](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-classic-platform.html)を使っている場合）

#ロードバランサーを設定する前の事前準備
**ロードバランサーを設定する際、VPCとサブネット指定する必要があります。**

VPCとサブネットをまだ作成していない方は、以下の記事を参考になさってみてください！

- [VPC作成 〜 パブリック・プライベートサブネットを作るまでの手順①](https://qiita.com/kanadeee/items/527e7ea4daed36b396fe)
- [VPC作成 〜 パブリック・プライベートサブネットを作るまでの手順②](https://qiita.com/kanadeee/items/daba7a84ac89eb89556c)
- [AWSコンソールからEC2インスタンスを作成する手順](https://qiita.com/kanadeee/items/cfdcffea3e47a0a71c98)

##ロードバランサー設定手順
**1.　[AWSコンソール](https://console.aws.amazon.com/console/home) にログイン**

**2.　[EC2] と入力し、Enterキーを押す**

**3.　サイドバーの[ロードバランシング] > [ロードバランサー] をクリック**

**4.　[ロードバランサーの作成] をクリック**

**5.　任意の内容を選択し、[作成] をクリック**
![スクリーンショット 2020-05-11 21.42.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/561538e2-0ead-6012-5dff-14a81112dff3.png)

今回はELB配下にEC2インスタンスを置きたいので `ALB` を選びました。

## ロードバランサーの設定
**1.　以下を設定し、[次のステップ: セキュリティ設定の構成] をクリック**
![スクリーンショット 2020-05-11 21.43.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/e65dba8a-15bb-0105-b99b-8dd0e1099d3e.png)
![スクリーンショット 2020-05-11 21.45.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/8c93d557-52e6-1090-bab6-4e70383e03a5.png)

- 基本的な設定 > 名前：ロードバランサー名 (任意の内容でOK)
- アベイラビリティゾーン > VPC:紐付けたいVPC
- アベイラビリティゾーン > サブネット:紐付けたいサブネット

他の項目はとりあえずデフォルト値にしておきます。 

## セキュリティ設定の構成
**1.　[次のステップ: セキュリティグループの設定] をクリック**

## セキュリティグループの設定
**1.　任意の内容を設定し、[次のステップ: ルーティングの設定] をクリック**
今回はELB用に新しいセキュリティグループを作成し、ルールはデフォルト値にしました。

## ルーティングの設定
ELBの通信経路を設定します。

**1.　任意の内容を設定し、[次のステップ: ターゲットの登録] をクリック**
今回はELB用に新しいターゲットグループを作成し、デフォルト値にしました。

## ターゲットの登録
ロードバランサーのトラフィック転送先 ＝ ターゲットです。
（例：EC2などのリソースやエンドポイント）

**1.　任意のインスタンスを選択し、[登録済みに追加] をクリック**
![スクリーンショット 2020-05-11 21.51.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/189ac959-64fd-85d6-48dd-0447957b6379.png)

**2.　選択したインスタンスが[登録済みターゲット] に追加されたことを確認し、[次のステップ: 確認] をクリック**
![スクリーンショット 2020-05-11 21.52.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/56e6b85a-39d6-937f-b8b2-8fd8a71e11b3.png)

## 確認
**1.　内容を確認し、問題なければ[作成] をクリック**

**2.　[閉じる] をクリック**
![スクリーンショット 2020-05-11 21.52.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/042b0b57-2369-aecb-d1d1-dbae5be9054f.png)

----
**【念のための確認①】**

　**1.　[リスナー]タブ > ルール > 転送先のリンクをクリック**
![スクリーンショット 2020-05-11 21.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/fca52666-59ad-66f3-07dd-cfdb4c1836ff.png)

　ターゲットがちゃんと登録できたことを確認できます。
![スクリーンショット 2020-05-11 21.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/2f129765-58dc-5c5d-7064-094691422602.png)

----
**【念のための確認②】**

　[説明]タブ内の`DNS名`をブラウザのURLバーにコピペすると、アクセスできることを確認できます。
　（※ 今回紐付けたサブネットの中にEC2が配置されている＆起動されている場合）
![スクリーンショット 2020-05-11 21.57.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/b6ad1eec-2653-28ac-97e3-a149545a5ba1.png)


#参考
- [【AWS Black Belt Online Seminar】Elastic Load Balancing (ELB)](https://www.youtube.com/watch?v=4laAoK-zXko)
- [レイヤ7 (L7)とは｜「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word1800.html)