よくわからないALBを触ってみた!

今回は職場でALBというものが出てきてよくわからなかったので記事にしました!

この記事のゴール

・ALBがなんぞやか判明する
・ALBの設定方法がわかる

前提

AWSを使用する 

ALBとは

ALBとはApplication Load Balancerの略になります。
AWSのEBL(Elastic Load Balancer)の第2世代に当たります。
第一世代はCLB(Classic Load Balancer)、ALB登場により、ELBがCLBと呼ばれるようになりました。

ALBとCLBの違い

こちらのサイトの表が参考になります。
https://aws.amazon.com/jp/elasticloadbalancing/features/

Load Balancerとは

以下の2つの役割があります。
① 大量のアクセスを負荷分散しサーバーにリクエストを送る
② 可用性の担保

① 大量のアクセスを負荷分散しサーバーにリクエストを送る

スクリーンショット 2020-11-01 0.59.51

② 可用性の担保

1台のサーバーが障害で停止した際に、残っているサーバーでサービスを提供することができます。

スクリーンショット 2020-11-01 1.43.22

AWSで実際に設定してみる

今回の構成

マルチAZで以下のような形で作成します。

スクリーンショット 2020-11-01 2.09.29

設定

1. VPCの作成

AWSのマネジメントコンソールから「VPC」を選択します

スクリーンショット 2020-11-01 2.21.06

サイドメニューのVPCを選択します

スクリーンショット 2020-11-01 2.22.01

「VPCの作成」ボタンを押下します

スクリーンショット 2020-11-01 2.24.32

「名前タグ」と「IPv4 CIDRブロック」に任意の値を設定し「VPCの作成」ボタンを押下します

スクリーンショット 2020-11-01 2.19.17

VPCを新規で作成すると、ルートテーブルとネットワークACL、セキュリティグループが自動的に作成されます。

EC2インスタンスにパブリックDNSを使用するので設定を変更します
作成したVPCを選択し、「DNSを解決」を選択します

スクリーンショット 2020-11-01 2.29.38

「DNS ホスト名」下の「有効化」チェックボックスにチェックを入れ、「変更の保存」を押下します

画像9

2. サブネットの作成

VPCのサイドメニューから「サブネット」を選択します

スクリーンショット 2020-11-01 2.35.49

「サブネットの作成」ボタンを押下します

スクリーンショット 2020-11-01 2.37.17

それぞれに以下を設定し、「作成」ボタンを押下します

名前タグ : 任意の名前
VPC : 先ほど設定したVPCを選択
アベイラビリティーゾーン :ap-northeast-1a
IPv4 CIDRブロック : 192.168.1.0/24
※ 後にVPC内にELB(ALB)を設定する場合は、20IP以上空いている必要があります

スクリーンショット 2020-11-01 2.43.46

以下の画面が表示されたら、「閉じる」ボタンを押下します

スクリーンショット 2020-11-01 2.48.37

アベイラビリティーゾーン :ap-northeast-1cにしてもう一つsubnetを作成します。

3.ルートテーブルの設定

ルートテーブルはサブネット単位で設定ができ、サブネット内のEC2のインスタンスのネットワークルーティングを制御します。

AWSマネジメントコンソールから以下の操作を行い、ルートテーブル作成画面を表示します。
VPC → ルートテーブル → ルートテーブルの作成

スクリーンショット 2020-11-01 12.56.15

名前タグに任意の値、VPCに作成したVPCを選択し「作成」を押下します

スクリーンショット 2020-11-01 12.59.16

作成完了画面が表示されたら「閉じる」ボタンを押下します

スクリーンショット 2020-11-01 13.01.32

3−1.サブネットとルートテーブルの関連付

作成したサブネットはVPC内のどれか1つのルートテーブルに紐付ける必要があります。

作成したルートテーブルにチェックを入れ、画面下の「サブネットの関連付け」タグを選択し、「サブネットの関連付けの編集」ボタンを押下します

スクリーンショット 2020-11-01 13.04.49

作成したサブネットにチェックを入れて「保存」ボタンを押下します。

スクリーンショット 2020-11-01 13.14.54

4.インターネットゲートウェイの作成

VPC内のEC2インスタンスが外部と通信できるように設定を行います。
AWSマネジメントコンソールより以下の操作で作成画面を表示します。
VPC → インターネットゲートウェイ → インターネットゲートウェイの作成

スクリーンショット 2020-11-01 13.39.07

名前タグに任意の値を設定し、「インターネットゲートウェイの作成」を押下します

スクリーンショット 2020-11-01 13.43.21

作成したインターネットゲートウェイにVPC紐付けます
AWSマネジメントコンソールから以下の操作で設定画面を表示します。
VPC → インターネットゲートウェイ → アクション → VPCにアタッチ

スクリーンショット 2020-11-01 13.47.00

「使用可能なVPC」に作成したVPCを選択し、「インターネットゲートウェイのアタッチ」ボタンを押下します

スクリーンショット 2020-11-01 13.49.06

4-1.ルートテーブルにインターネットゲートウェイを設定する

VPC内のリソースからインターネットアクセスを許可するためには、publicサブネットが関連付されているルートテーブルに、インターネットゲートウェイのルートを含んでいる必要があります。

AWSマネジメントコンソールより以下の手順で設定画面を表示します
VPC → ルートテーブル

設定対象のルートテーブルにチェックを入れ、画面下の「ルート」タブを選択し、「ルートの編集」を押下します

スクリーンショット 2020-11-01 14.05.48

送信先に「0.0.0.0/0」(全ての送信先)を設定し、ターゲットにInternet Gatewayを選択します。Internet Gatewayを選択すると作成したインターネットゲートウェイが表示されるので設定対象の物を選択、「ルートの保存」を押下します

スクリーンショット 2020-11-01 14.09.13

ルートテーブルの編集完了画面が表示されたら「閉じる」ボタンを押下します。

スクリーンショット 2020-11-01 14.09.33

5.EC2を作成する

VPC、publicサブネット内にEC2インスタンス(仮想サーバー)を作成します。

5-1. 公開鍵・秘密鍵の作成

EC2では公開鍵暗号方式で暗号化します。EC2へログインするためには公開鍵・秘密鍵が必要になります。

AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します。
EC2 → サイドメニューよりキーペア

スクリーンショット 2020-11-01 14.26.49

「キーペアの作成」ボタンを押下し、名前に任意の値を設定し、「キーペアの作成」ボタンを押下します

スクリーンショット 2020-11-01 14.31.00

作成が完了するとキーペアファイルがダウンロードされます、このタイミングでしかダウンロードできないので、消してしまった場合は再度作成が必要になります。

5-2. セキュリティグループを作成する

通信の許可設定を行います
AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します。
EC2 → セキュリティグループ

「セキュリティグループを作成」ボタンを押下します。

スクリーンショット 2020-11-01 20.27.08

セキュリティグループ名、セキュリティグループの説明に任意の値を設定し、VPCに作成したVPCを選択肢、「セキュリティグループを作成」ボタンを押下します

スクリーンショット 2020-11-01 20.31.15

5-3. セキュリティグループのルールの設定

EC2インスタンスにsshでログインできるようにルールの設定を行います

先ほど作成が完了したセキュリティグループの画面より、「インバウンドルールを編集」ボタンを押下します。

スクリーンショット 2020-11-01 20.38.32

「ルールを追加」ボタンを押下し、以下を入力・選択し「ルールを保存」ボタンを押下します
      タイプ:SSH
   ソース : マイIP(マネジメントコンソールにアクセスしているグローバルIPが指定される)
      ※プロトコルとポート範囲は自動入力になります

スクリーンショット 2020-11-01 20.45.00

5−4. EC2インスタンスの作成

AWSマネジメントコンソールより以下の操作でEC2の作成画面を表示します
EC2 → インスタンス
「インスタンスの起動」ボタンを押下します

スクリーンショット 2020-11-01 20.59.52

「無料枠のみ」にチェックを入れ、Amazon Linax 2  AMI(HVM), SSD Volume typeの「選択」ボタンを押下する

スクリーンショット 2020-11-01 21.01.42

「次のステップ: インスタンスの詳細の設定」ボタンを押下する

スクリーンショット 2020-11-01 21.09.35

以下の項目を設定し、「次のステップ: ストレージの追加」を押下する
    ネットワーク:作成したVPC
    サブネット : 作成したサブネット
    自動割り当てパブリックIP : 有効

スクリーンショット 2020-11-01 21.11.20

「次のステップ: タグの追加」ボタンを押下します。
設定は行いません。

スクリーンショット 2020-11-01 21.16.43

「次のステップ: セキュリティグループの設定」を押下します
この画面も設定は行いません。

スクリーンショット 2020-11-01 21.18.06

「既存のセキュリティグループを選択する」を選択し、作成したセキュリティグループにチェックを入れ「確認と作成」ボタンを押下します

スクリーンショット 2020-11-01 21.19.58

確認画面が表示されるので、「起動」ボタンを押下します

スクリーンショット 2020-11-01 21.22.27

キーぺあの設定が画面が表示されるので、チェックボックスにチェックを入れ、「インスタンスの作成」ボタンを押下します
※ ここで指定するキーペアは5-1で作成したキーペアになります

スクリーンショット 2020-11-01 21.23.55

5-5. EC2インスタンスに接続する

5-1で作成したキーを~/.ssh/ディレクトリに移動し以下のコマンドで権限を変更し、sshでEC2に接続します

chmod 600 ~/.ssh/AWSのキー.pem
ssh -i ~/.ssh/AWSのキー.pem ec2-user@EC2のパブリックIP

接続が成功すると以下の画面が表示されます

スクリーンショット 2020-11-01 21.44.53

5-6. Apacheをインストールしwebアクセスを確認

EC2のIPやパブリックDNSを使用して、webからアクセスできるように設定します。
EC2にsshでログインした状態で以下のコマンドを実行します。

sudo yum install httpd -y
sudo service httpd start
# 自動起動設定
sudo chkconfig http on

セキュリティグループの設定でhttpのアクセスは許可していないのでルールを追加します。
AWSマネジメントコンソールで以下の操作を行いインバウンドルールの編集画面を表示します。
EC2 → セキュリティグループ

画面下のタブより「インバウンドルール」を選択し、「インバウンドルールの編集」ボタンを押下します

スクリーンショット 2020-11-01 22.05.21

「ルールの追加」ボタンを押下し、以下の設定を行い「ルールを保存」ボタンを押下します
    タイプ : HTTP
    ソース : 任意の場所
    ※ プロトコル、ポート範囲は自動入力となります

スクリーンショット 2020-11-01 22.09.23

EC2のパブリックIP or パブリックDNSでアクセスし以下のテストページが表示されれば成功です!

スクリーンショット 2020-11-01 22.10.35

5-1~5-6の手順で2つ作成したサブネットのもう片方に紐づくインスタンスも作成します

6. ELBの作成

6-1. ELB用のセキュリティグループを作成

AWSマネジメントコンソールより以下の操作を行い、設定画面を表示します
 EC2 → セキュリティグループ → セキュリティグループの作成

以下の設定を行い、「セキュリティグループを作成」ボタンを押下します
  セキュリティグループ名 : 任意の値
 説明 : 任意の値
 VPC : 作成したVPCを選択
 ■インバウンドのルール(「ルールを追加」ボタンを押下します)
 タイプ : HTTP
 ソース : 任意の場所
 ※ プロトコル、ポート範囲は自動入力になります

スクリーンショット 2020-11-01 22.37.27

6-2. ELBの作成

AWSマネジメントコンソールより以下の操作を行い、ELB作成画面を表示します。
 EC2 → ロードバランサー → ロードバランサーの作成

Application Load Balancerの「作成」ボタンを押下します

スクリーンショット 2020-11-01 22.40.28

以下の項目を設定し、「次の手順: セキュリティ設定の構成」ボタンを押下します
 ■ 基本的な設定
  名前: 任意の値
  スキーマ: インターネット向け
  IPアドレスタイプ: ipv4
 ■ アベイラビリティーゾーン
  VPC: 作成したVPC
  サブネット: 作成した2つのサブネット

スクリーンショット 2020-11-01 22.46.51

「次の手順: セキュリティグループの設定」を押下します

スクリーンショット 2020-11-01 22.52.04

「既存のセキュリティグループを選択する」にチェックを入れ、6-1で作成したセキュリティグループを選択し、「次の手順: ルーティングの設定」を押下します

スクリーンショット 2020-11-01 22.55.39

名前に任意の値を設定し、残りはデフォルト設定のまま「次の手順: ターゲットの設定」ボタンを押下します

スクリーンショット 2020-11-01 22.59.41

インスタンスを追加し「次の手順: 確認」ボタンを押下します

スクリーンショット 2020-11-01 23.00.39

完了画面が表示されたら「閉じる」ボタンを押下する

スクリーンショット 2020-11-01 23.04.44

7. アクセス確認

状態がactiveになったことを確認し、ELBのDNSでwebからアクセスします

スクリーンショット 2020-11-01 23.06.50

作成したEC2にログインし、/var/www/html/index.htmlを作成します。
その際に2つのEC2でhtmlの中身を変えてください。
私の環境では以下で作成しています。
 ap-northeast-1a: htmlの中身「HELLO WORLD2!」
 ap-northeast-1c : htmlの中身「HELLO WORLD!」

ELBのDNSでブラウザでアクセス

スクリーンショット 2020-11-01 23.16.02

7-1.  ap-northeast-1aに紐づくEC2インスタンスを停止しアクセス

「HELLO WORLD!」と表示されます

スクリーンショット 2020-11-01 23.18.14

スクリーンショット 2020-11-01 23.20.08

7-2. ap-northeast-1cに紐づくEC2インスタンスを停止しアクセス

「HELLO WORLD2!」と表示されます

スクリーンショット 2020-11-01 23.22.54

スクリーンショット 2020-11-01 23.23.53

ELBにec2インスタンスを登録しているので、EIPは使用しなくても大丈夫です!

設定が大変でしたが、一通り設定すると流れを覚えることができてよかったです!
こんなに簡単に設定できるクラウドサービスの恩恵だと思います!オンプレミスだと大変そう・・・

最後まで読んでいただきありがとうございました!

この記事が気に入ったらサポートをしてみませんか?