【Lightsailハンズオン】ALBを使用してLightsailを冗長構成にする

#1.はじめに
最近、ALBはターゲットにIPアドレスを指定可能だということを知りました。(今更..)
今まではインスタンスIDを使用してターゲットグループを指定していましたが、IPが使用できるようになり、ピアリングしたVPCやDirectConnectしたオンプレの鯖などもターゲットの対象となりALBの汎用性が高まったといえます。
今回は早速IPタイプを使用してのALB構築を検証していこうと思います。

##1.1 更新履歴
更新日 - 更新内容
2021年02月28日 - 画像の差し替え、文言の修正
2021年06月14日 - 画像の差し替え、文言の修正

#2.概要 & 目標
本ハンズオンの流れ、および、目標を以下に記載します。

<b><流れ></b>
1：各AZでLightsailインスタンスを構築
2：VPC(ALB側)とVPC(Lightsail側)をピアリング接続
3：ユーザーからLightsailへの通信をALBを使用して負荷分散を行う。

<b><目標></b>
AWS ELBを使用してのLightsailインスタンスの冗長構成の実現。

#3.構成
本ハンズオンの構成を以下に記載する。
3-1.構成図
3-2.使用サービス
##3-1構成図
今回構築する構成図はこちらになります。
![aws2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/7092055c-82ae-c47e-fa7b-58f43395a1d0.png)

##3-2.使用サービス
ハンズオンでは以下のサービスを使用します。

・AWS ELB
・AWS Lightsail
・AWS VPC Peering
・Default VPC(セット)

（なんとコスパの良いハンズオンなのでしょうか。。)
#4.Lightsailインスタンスの構築
<b>■手順②：Lightsailコンソールを開きます</b>
AWSマネジメントコンソールの検索窓で『Lightsail』と入力し検索をかけます。
検索結果に表示される『Lightsail』をクリックしてLightsailマネジメントコンソールを開きます。

<b>■手順②：AZ-aのインスタンスを構築</b>
ホームコンソールの『インスタンス』タブをクリック。
真ん中右上の『インスタンスの作成』ボタンをクリック。

以下のような作成画面が表示されるので、赤枠で囲ってあるリンクをクリックしてロケーションを設定します。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/daafa4ef-2cd1-8e47-8d8b-2578bf924fdb.png)
ロケーションの選択画面が表示されるので、以下リージョンとAZを選択します。
'*****************************************
・リージョン：東京
・AZ：ゾーンA
'*****************************************
![スクリーンショット (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/71181959-ca93-b31b-4d95-185fe96b9597.png)
インスタンスイメージの選択では、以下のプラットフォームと設計図を選択します。
'*****************************************
・プラットフォーム：Linux/Unix
・設計図：Amazon Linux2
'*****************************************
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/665ed69f-b097-4187-8b6c-cb5286c8ef60.png)
オプション下の『＋起動スクリプトの追加』をクリックし、表示されたエディタ内に以下スクリプトを貼り付けてください。

``` bash:起動スクリプト
#!/bin/bash
#apacheをインストール
yum install -y httpd 
#apacheを起動
systemctl start httpd
#apacheを自動起動にする
systemctl enable httpd
#テストページを作成
#AZがCの方ではAZ-aをAZ-cに変える
echo "Web server AZ-a" > /var/www/html/index.html  
```
![スクリーンショット (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/bba6bd4b-ddd8-5c55-0786-91d894a31538.png)
『インスタンスプランの選択』にて、契約プランを決めます。
本ハンズオンではデフォルトで設定されている無料プラン（最初の1ヶ月のみ）を使用していきます。
![インスタンスプランの選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/b6857506-1cbe-a803-3034-fe11f8a2786a.png)
『インスタンスを確認』の下にある入力フォームにてリソース名を記入します。
AZ-Aに所属しているインスタンスだということか分かるにリソース名を決めましょう。
![インスタンス名の確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/6053f860-b358-d08d-3277-216d10e4f316.png)
最後設定をイチから見直し問題がないようであれば、『インスタンスの作成』ボタンをクリックしてインスタンスを作成します。

<b>■手順③：AZ-cのインスタンスを作成</b>
手順②と同じ手順でAZ-cにもう一つインスタンスを作成してください。
作成するにあたって下記対応を忘れないようにしましょう。
'*****************************************
・AZの選択："AZ-c"を選択
・起動スクリプト：htmlで表示させる文字列をAZ-aからAZ-cに書き換え
'*****************************************

ここまでで2つのLightsailインスタンスがそれぞれ別々のAZに作成されていると思います。
それぞれのパブリックIPアドレスをコピーしてブラウザに入力してみて下さい。
インスタンスが正しく作成できていれば、起動スクリプトで設定した文字列（AZ-a or AZ-c）が出力されているテストページが表示されるはず。
#5.VPC Peeringの設定
<b>■手順①：LightsailのPeering接続を有効化する</b>
Lightsailコンソール画面右上の『アカウント』をクリック。
プルダウンがでてくるので『アカウント』を選択します。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/dd5ce5e1-7609-2d36-5a6b-337b40d269a9.png)
『アドバンスド』タブを選択します。
下にスクロールして、『VPC ピア接続』-『東京リージョン』の下の『ピア接続の有効化』にチェックを入れます。
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/71428e72-df03-757d-904f-d9b0690c79ff.png)
以上の手順にてLightsailと東京リージョンとのピアリング接続が完了しました。(早い。。)
次の手順で実際にPeering接続が設定されているのか確認してみましょう。

<b>■手順②：VPC Peering接続の確認</b>
AWSマネジメントコンソールを開きます。
検索窓でVPCと入力し検索をかけます。
検索結果に表示される『VPC』をクリックしてVPCコンソールを開きます。
開いたら左のタブから『ピアリング接続』をクリックして、VPC Peeringマネジメントコンソールを開きます。
先の手順で設定したピアリング接続が作成されていることが確認できます。
![スクリーンショット (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/ad6c5a07-8d0f-bd41-277b-248727b6352a.png)

#6.ALBの作成
<b>■手順①：ALBコンソールを開く</b>
AWSマネジメントコンソールの検索窓で『EC2』と入力し検索をかけます。
検索結果に表示される『EC2』をクリックしてEC2マネジメントコンソールを開きます。
左のタブから『ロードバランサー』を選択。
マネジメントコンソール左上にある『ロードバランサーの作成』をクリックし、ELBの作成に進みます。
　
<b>■手順②：ALBの作成</b>
<b>【ロードバランサーの種類の選択】</b>
LBの種類は『Application Load Balancer』を選択します。
![LBの種類を選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/e4224ce8-4a76-bb5d-b091-756837134617.png)

<b>【手順 1: ロードバランサーの設定】</b>
ここでは基本的なロードバランサーの設定を行います。
《基本的な設定》と《アベイラビリティゾーン》以外は以下のように設定して下さい。
それ以外はデフォルトのままで大丈夫です。

《基本的な設定》
'*****************************************
・名前 → お好きな名前を付けてください。
・スキーム → インターネット向け
・ipタイプ → ipv4
'*****************************************
![スクリーンショット (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/93ecbd1c-70d7-514a-79d7-796c4d39f0ff.png)

《アベイラリビティゾーン》
'*****************************************
・VPC → デフォルトVPC
・AZ → a と c を選択
'*****************************************
![ALB_AZの選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/8b6e907d-17a3-5310-c21d-c8d5cdef19d9.png)

<b>【手順 2: セキュリティ設定の構成】</b>
セキュリティ関係で警告がでていますが、無視して次の手順へ進みます。

<b>【手順 3: セキュリティグループの設定】</b>
『80番ポート』が開いているセキュリティグループを選択、または新規セキュリティグループを作成し、『80番ポート』を開けます。

<b>【手順 4: ルーティングの設定】</b>
ここではターゲットグループの設定を行います。

《ターゲットグループ》
'*****************************************
・ターゲットグループ → 新しいターゲットグループ
・名前 → 好きな名前
・ターゲットの種類 → IP ※『1.はじめに』で言ってたのはこれ！！！
'*****************************************
![スクリーンショット (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/a365d3a9-6064-2342-3853-8e893026cacb.png)

<b>【手順 5: ターゲットの登録】</b>
『IP』欄にLightsailインスタンスの『プライベートIP』を入力し、『リストに追加』をクリックします。
![スクリーンショット (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570694/a70f63c4-416e-6e4a-c396-ca1b9bf48e0b.png)

<b>【手順 6: 確認】</b>
最後に手順通り設定できているか確認し、問題が無いようであれば『作成』をクリック。

#7.動作確認（負荷分散チェック）
これで今回のハンズオンは完了したので、最後にALBのDNS名をコピーしてブラウザに貼り付けます。
無事テストページが表示されるようであれば今回のハンズオンは終了です。
F5を連打してみると負荷分散できていることが確認できます。

#8.まとめ
ハンズオン通り行えば最後まで無事完走できるはずです。
ALBは日々のアップデートにより汎用性の高いものになってきました。
今後は更に様々なリソースを負荷分散していきたいと思います。
では以上で失礼します。