今さら聞けないAWSでロードバランサーを使ったWEBサイト構築手順(ロードバランサー編)

第4回目はロードバランサー編ということで、ロードバランサーを作成していきます。
あと最後にロードバランサー用のDNSレコードを登録します。

## 構成図
構成図でいうと赤枠部分の設定をしていきます。
![20220901_alb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/406d2753-a0a5-8558-caeb-1cb7bfa7c7d2.png)

## ロードバランサー作成
いよいよ最後となるロードバランサーを作成します。

ロードバランサー作成は「ロードバランサーの作成」と「ターゲットグループ」の作成が必要になります。

ターゲットグループはロードバランサー配下にどのインスタンスを配置するか指定します。
今回のような1台構成でもターゲットグループの作成は必要です。

図にすると以下のようになります。
![alb_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/771b9f5e-a847-4358-036a-22eb5d7df2b4.png)
ロードバランサーにSSL証明書を適用して
ターゲットグループとしてWEBサーバーを登録するイメージになります。

ではターゲットグループから作成していきます。

### ターゲットグループ作成
AWSマネジメントコンソールからEC2へ移動します。
「ターゲットグループ」をクリックします。
![alb_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/e5800a86-d601-f4a5-11c7-d1ba6b32d87e.png)

次に「Create target group」をクリックします。
![alb_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/78739622-7c41-e777-e7ca-88a618ec8c27.png)

target typeは「instances」を選択してターゲットグループ名を入力します。例では「web-system-tg」とします。
ターゲットのプロトコルはHTTPとします。これはVPC内でロードバランサーとWEBサーバー間はhttp通信のためにこの設定となります。
![alb_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/2ffe70c3-7f0a-1d0e-5f4c-5da38c11fee8.png)

次にVPCとProtocolを選択します。
VPCは作成した「VPC」
Protpcolは「HTTP1」
を選択します。Health checksはデフォルト設定のままとします。
![alb_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/e9417e55-c912-c60b-ed56-a4bd77f22265.png)

画面右下の「Next」をクリックします。
![alb_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/780d863c-c371-3072-2b55-c10ce1efa9c9.png)

ここでターゲットグループに追加するインスタンスを選択します。
WEBサーバーの「web-system」を選択して「」include as pending below」をクリックします。
![alb_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/988fd58f-427e-8376-f784-124099e719a2.png)

Review targetsに登録されたことを確認します。
確認したら「create target group」をクリックします。
![alb_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/af97bd98-ed14-8fc4-581b-b03e12a6daf0.png)

以上でターゲットグループの作成は完了です。

## サブネットの追加
次はロードバランサーの設定といきたいところですが、ここでサブネットを1つ追加します。
ロードバランサーを作成するために最低2つのAZにサブネットが必要になります。

AWSマネジメントコンソールからVPC→サブネット→サブネットの作成と画面遷移します。
そして以下の画面のように設定してpublicサブネットを1つ追加します。
![subnet_add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/ccb0b1bd-8d1a-4435-d4a8-a54721118cff.png)

## ロードバランサー作成
AWSマネジメントコンソールからEC2へ移動します。
「ロードバランサー」をクリックします。
![alb_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/2bd15e58-b006-b694-c43c-5c89a661c1fd.png)

次に「ロードバランサーの作成」をクリックします。
![alb_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/0819a40e-0602-65f5-5dad-f7cda6d391da.png)

次にロードバランサーのタイプを選択しますが今回は「Application Load Balancer(ALB)」を選択します。
![alb_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/83998ff6-dbb9-f89d-154b-4a7464dc39a7.png)

ロードバランサーの名前を入力します。例では「web-system-alb」とします。
その他の設定はそのままとします。
![alb_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/5430e757-f95f-29e7-ed9d-2b1925771bf1.png)

VPCとPublicサブネットを2つ選択します。ap-northeast-1cのサブネットは直前で作成したものでap-northeast-1aのサブネットはネットワーク編で作成したサブネットです。
両方ともPublicサブネットであることを確認します。
これはロードバランサーをPublicサブネットに配置するためです。
![alb_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/65d4488a-2d06-cb71-7542-9131239c1cf1.png)

セキュリティグループは作成した「web-system-alb-sg」を選択します。
defaultで最初から適用されているものがありますが削除して問題ありません。
![alb_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/dee5d177-be5e-a84b-85be-81ee4d2a5f56.png)

セキュリティグループは最終的に以下のようになっていればOKです。
![alb_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/0a6d7594-198b-286d-92f5-8778b565b347.png)

次にリスナーの設定です。HTTPで通信する場合のターゲットグループを登録します。
HTTPを選択して「Forward to」を選択し、その中から作成したターゲットグループを選択します。
この設定をいれることでロードバランサーにHTTPでアクセスが来た場合にターゲットグループ(WEBサーバー)に転送されてWEBページが閲覧できるようになります。
![alb_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b31770eb-95ad-7029-f27a-1ff021e47761.png)

最後に「Create load balancer」をクリックします。
![alb_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/e5a9fa51-5fc5-3939-28ef-e339f982a4b6.png)

ロードバランサーが作成されたことを確認します。
確認しましたらリスナーの追加をします。先ほどはHTTPの設定だけをしましたがHTTPS通信もロードバランサーで受け付ける設定を追加します。
マネジメントコンソールのロードバランサーの画面でロードバランサーを選択して、「リスナー」タブをクリックして、さらにリスナーの追加をクリックします。
![alb_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/bd9b78c5-e679-6415-7909-0a20b3be9642.png)

今度はHTTPSを選択して、Add actionを選択します。
![alb_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/199988e9-0fcc-6b3c-6ade-509c623e3172.png)

「Forward to」を選択して、ターゲットグループを選択します。
この設定でロードバランサーでHTTPSで受け取ってVPC内部のターゲットグループ(WEBサーバー)にはhttpで通信するという設定が入ることになります。
![alb_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/c9affb88-d423-9afc-0294-55c32f3399b7.png)

次にHTTPS通信を受け取るので証明書を指定します。
第1回目で作成したSSL証明書を選択します。選択したら「Add」をクリックします。
![alb_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/5ad636b0-d20a-92bc-3747-6d19981100af.png)

最終的に以下のようになっていればOKです。
![alb_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/5033f9e5-57cf-95cf-9043-2f466f58b6d5.png)

以上でロードバランサーの設定は完了です。

## DNSレコードの登録
最後の仕上げです。作成したロードバランサー用のDNSレコードを追加してブラウザから独自ドメインでアクセスできるように設定します。

AWSマネジメントコンソールからRoute53へ移動します。
「ホストゾーン」をクリックします。
![dns_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/f425fca0-6f99-2b50-501e-408f6b0f74e6.png)

ホストゾーンのドメインをクリックします。
![dns_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/b69438f5-84e9-3d49-b6eb-1003e66a1fb9.png)

次に「レコードの作成」をクリックします。
![dns_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/e969e34a-0979-0422-5578-f3650dbc0ab3.png)

ロードバランサー用のレコードはエイリアスレコードを作成します。
エイリアスをクリックします。
正直このエイリアスレコードって何？って最初思いました。オンプレの世界には無いレコードで、クラウド専用のレコードと思っていただければ良いかと思います。
![dns_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/1678b543-139f-09c6-a345-41e4db6011d3.png)

トラフィックルーティング先にて対象のロードバランサーを選択します。
以下の図のように順番に選択します。
最後に「レコードを作成」をクリックします。
![dns_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/c1e488f5-7f77-c84d-42d2-3e1f3214bf72.png)

最後にブラウザでアクセスできることを確認します。
![dns_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101744/78754d90-e643-8bab-c5cc-cd3947409413.png)

非常に長くなりましたが、これでロードバランサーを経由したWEBサーバにアクセスさせることができました。
お疲れ様でした！