【AWS VPC入門】3.ELB

# 前回までの記事
[【AWS VPC入門】0.概要](https://qiita.com/_Yasuun_/items/ae6b1b7fa3397256ee90)
[【AWS VPC入門】1.VPC/Subnet](https://qiita.com/_Yasuun_/items/8677681a21ae7437757f)
[【AWS VPC入門】2.EC2/Internet Gateway/Route Table](https://qiita.com/_Yasuun_/items/fc6f401eeaf9a3cb7b2c)

# 今回のゴール
- VPC上にELBを配置する。
- HTTPアクセスをELB経由で`EC2インスタンス(Web)`に振り分ける。
- SGを編集し`EC2インスタンス(Web)`へのHTTPアクセスをELB経由からのみ許可する。

# ELB/ALB/NLB

現在AWSでは3つのロードラバランサを選択できます。
大まかな特徴は以下です。

- ELB (Classic Load Balancer)
    - 旧型の汎用LB
    - L4/L7レイヤーをサポート

- ALB (Application Load Balancer)
    - CLBよりも高性能でAWS WAFやターゲットグループ等が使用できる
    - L7レイヤーをサポート 

- NLB(Network Load Balancer)
    - 大量トラフィック用のELB
    - L4レイヤーをサポート

今回はELB (Classic Load Balancer)を使用します。

# ELBの作成

EC2のダッシュボードから「ロードバランサーの作成」を選択し、「`Classic Load Balancer`」を選択します。

<img width="1232" alt="スクリーンショット 2018-12-16 17.15.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/b44ca105-35be-dfbb-2570-a9c782a0bb55.png">


「基本的な設定」を以下内容で設定します。

| ロードバランサー名 | ロードバランサーを作成する場所|
|---|---|---|
| SampleELB  |SampleVPC |

今回はHTTPSを使用しないためHTTPのみを登録します。
<img width="1268" alt="スクリーンショット 2018-12-16 17.48.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/7316e107-470a-b87e-c1e0-5e1a8f5e76ca.png">

対象とするサブネットとして`EC2インスタンス(Web)` が存在する `SamplePrivateSubnet` を選択します。
<img width="1260" alt="スクリーンショット 2018-12-16 17.41.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/018bf04c-0473-77b3-b1d6-4559d49b6325.png">

ELBのセキュリティグループを新規作成します。
インターネットからのアクセスを許可するため、すべてのHTTPアクセスを許可します。
<img width="1269" alt="スクリーンショット 2018-12-16 17.47.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/e27ae612-348d-5539-bfa2-51c92bb05cbd.png">

続いてヘルスチェックの設定を行います。
今回はNginxのWelcomeページがヘルスチェックの対象となるため、pingパスを `/` に変更します。
<img width="1277" alt="スクリーンショット 2018-12-16 17.51.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/17bc6bb6-a4c0-ac5e-a80c-41ad91857fa2.png">

最後に振り分け対象とするインスタンスを選択します。
前回の章で立てたEC2 `SampleWeb`を対象とします。
<img width="1274" alt="スクリーンショット 2018-12-16 17.52.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/e1102dbd-a786-edc8-345b-fdbd2ff8798c.png">

作成後はELBのステータスを確認します。
該当のELBを選択し、インスタンスタブからステータスを確認します。
初回のヘルスチェックが実行されるまで若干時間がかかります。
「OutOfService」から「InService」になれば準備完了です。
<img width="1225" alt="スクリーンショット 2018-12-16 19.02.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/5dfff413-d6bb-addc-eb03-c769cc95f46d.png">


# SGの変更
現状の `EC2インスタンス(Web)`はELBを経由しないHTTPアクセスも可能になっていますが、ELBができたのでELBを経由しないアクセスを禁止したいと思います。

EC2のダッシュボードから `SampleWeb`インスタンスを選択し、セキュリティグループから `SampleWebSG`を選択します。
<img width="1272" alt="スクリーンショット 2018-12-16 18.00.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/54c82c7e-872f-ac24-e98d-1866e5d4eb1b.png">

 `SamplePrivateSubnet(19.9.193.0/26)` からの `HTTP` を受け付けるようにインバウンドのルールを変更します。
<img width="1268" alt="スクリーンショット 2018-12-16 18.03.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/647790c8-f3d5-0c1b-1c63-327d27478b07.png">

変更完了後、動作確認のため `SampleELB` に設定された`DNS名`を取得し、ブラウザからアクセスしてみます。
<img width="1276" alt="スクリーンショット 2018-12-16 19.30.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/15734/f39206a5-38bf-aa33-4bf3-123251f3523a.png">

前回と同様に `Welcome to nginx on Amazon Linux!` と書かれたNGINXのWelcomeページが表示されていれば成功です。

# 次章
[【AWS VPC入門】4.NatGateway/Bastion](https://qiita.com/_Yasuun_/items/4fc50d94baafd6e38af2)