AWSのELBを検証してみた

スポンサーリンク

はじめに

ELB(Elastic Load Balancing)を使用してWebサーバを冗長化します。

環境

手順

大きな流れは以下の通りです。順番に設定していきましょう。

  1. VPCの作成
  2. サブネットの作成
  3. インターネットゲートウェイの設定
  4. ルートテーブルの編集
  5. EC2インスタンスの作成
  6. ロードバランサーの設定

VPCの作成

AWSマネジメントコンソールからVPCサービスにアクセスします。
左サイドバーから「VPC」をクリックします。「VPCを作成」ボタンをクリックします。
以下の通り入力します。
名前タグ:Test-VPC
IPv4 CIDR ブロック:10.0.0.0/16
IPv6 CIDR ブロック:IPv6 CIDR ブロックなし
テナンシー:デフォルト
「VPCを作成」ボタンをクリックします。

サブネットの作成

左サイドバーから「サブネット」をクリックします。「サブネットを作成」ボタンをクリックします。
以下の通り入力します。
VPC ID:Test-VPC
サブネット名:Test-PublicSubnet01
アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1a
IPv4 CIDR ブロック:10.0.1.0/24

「新しいサブネットを追加」ボタンをクリックします。
サブネット名:Test-PublicSubnet02
アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1c
IPv4 CIDR ブロック:10.0.2.0/24
「サブネットを作成」ボタンをクリックします。

インターネットゲートウェイの設定

左サイドバーから「インターネットゲートウェイ」をクリックします。「インターネットゲートウェイの作成」ボタンをクリックします。
以下の通り入力します。
名前タグ:Test-IGW
「インターネットゲートウェイの作成」ボタンをクリックします。
「アクション」ボタンから「VPCにアタッチ」をクリックします。
使用可能な VPCは、「Test-VPC」を選択します。
「インターネットゲートウェイのアタッチ」ボタンをクリックします。

ルートテーブルの設定

左サイドバーから「ルートテーブル」をクリックします。VPCに「VPC-Test」が入っている項目を選択します。
「ルート」タブをクリックします。
「ルートの編集」ボタンをクリックします。
「ルートの追加」ボタンをクリックします。
以下の通り入力します。
送信先:0.0.0.0/0
ターゲット:InternetGateway(Test-IGW)
「変更を保存」ボタンをクリックします。

「サブネットの関連付け」タブをクリックします。
「サブネットの関連付けを編集」ボタンをクリックします。
「Test-PublicSubnet01」と「Test-PublicSubnet02」にチェックを入れて「関連付けを保存」ボタンをクリックします。
「閉じる」ボタンをクリックします。

EC2インスタンスの作成

EC2インスタンスは2台作成します。
EC2サービスにアクセスします。
左ペインから「インスタンス」をクリックします。「インスタンスを起動」ボタンをクリックします。

名前とタグ

名前:Test-Server01

アプリケーションおよび OS イメージ (Amazon マシンイメージ)

Amazon マシンイメージ (AMI):Amazon Linux 2 AMI(HVM) - Kernel 5.10, SSD Volume Type
アーキテクチャ:64ビット(x86)

インスタンスタイプ

インスタンスタイプ:t2.micro

キーペア(ログイン)

キーペア:任意のキーペアを選択

ネットワーク設定

「編集」ボタンをクリックします。
VPC:Test-VPC
サブネット:Test-PublicSubnet01
パブリック IP の自動割り当て:有効化
ファイアウォール (セキュリティグループ):セキュリティグループを作成する
セキュリティグループ名:Test-SG01
説明:Test-SG01
インバウンドセキュリティグループのルールで「削除」ボタンをクリックします。
「セキュリティグループルールを追加」ボタンをクリックします。
タイプ:http
プロトコル:TCP
ポート範囲:80
ソースタイプ:任意の場所
ソース:0.0.0.0/0

ストレージを設定

1x:8GiB gp2

高度な詳細

ユーザーデータ:以下をコピペして下さい。

#!/bin/bash
#ホスト名の変更
sudo hostnamectl set-hostname Web-Server01

#タイムゾーンの変更
timedatectl set-timezone Asia/Tokyo

#ロケールの設定
localectl set-locale LANG=ja_JP.UTF-8

#Apacheのインストール
sudo yum update -y
sudo yum install httpd -y
sudo systemctl enable --now httpd

#index.htmlの作成
echo "<html><h1>Web-Server01</h1></html>" > /var/www/html/index.html

インスタンスの起動

右ペインから「インスタンスを起動」ボタンをクリックします。
これで1台目のインスタンス作成は完了です。続けて2台目を作成します。

EC2サービスの左ペインから「インスタンス」をクリックします。「インスタンスを起動」ボタンをクリックします。

名前とタグ

名前:Test-Server02

アプリケーションおよび OS イメージ (Amazon マシンイメージ)

Amazon マシンイメージ (AMI):Amazon Linux 2 AMI(HVM) - Kernel 5.10, SSD Volume Type
アーキテクチャ:64ビット(x86)

インスタンスタイプ

インスタンスタイプ:t2.micro

キーペア(ログイン)

キーペア:任意のキーペアを選択

ネットワーク設定

「編集」ボタンをクリックします。
VPC:Test-VPC
サブネット:Test-PublicSubnet02
パブリック IP の自動割り当て:有効化
ファイアウォール (セキュリティグループ):既存のセキュリティグループを選択する
共通のセキュリティグループ:Test-SG01

ストレージを設定

1x:8GiB gp2

高度な詳細

ユーザーデータ:以下をコピペして下さい。

#!/bin/bash
#ホスト名の変更
sudo hostnamectl set-hostname Web-Server02

#タイムゾーンの変更
timedatectl set-timezone Asia/Tokyo

#ロケールの設定
localectl set-locale LANG=ja_JP.UTF-8

#Apacheのインストール
sudo yum update -y
sudo yum install httpd -y
sudo systemctl enable --now httpd

#index.htmlの作成
echo "<html><h1>Web-Server02</h1></html>" > /var/www/html/index.html

インスタンスの起動

右ペインから「インスタンスを起動」ボタンをクリックします。
これで2台目のインスタンス作成は完了です。

ロードバランサーの設定

ロードバランシングは「ロードバランサー」と「ターゲットグループ」の2つの設定が必要です。ターゲットグループから設定していきます。

ターゲットグループ

EC2サービスにアクセスします。左サイドバーから「ターゲットグループ」をクリックします。「ターゲットグループの作成」ボタンをクリックします。

基本的な設定

ターゲットタイプの選択:インスタンス
ターゲットグループ名:任意の名前を入力
プロトコル:HTTP
ポート:80
VPC:Test-VPC
プロトコルバージョン:HTTP1

ヘルスチェック

ヘルスチェックプロトコル:HTTP
ヘルスチェックパス:/
ポート:トラフィックポート
正常のしきい値:2
非正常のしきい値:2
タイムアウト:5
間隔:10
成功コード:200

「次へ」ボタンをクリックします。

使用可能なインスタンス

「Test-Server01」と「Test-Server02」にチェックを入れます。「保留中として以下を含める」ボタンをクリックします。「ターゲットグループの作成」ボタンをクリックします。

ロードバランサー

左サイドバーから「ロードバランサー」をクリックします。「ロードバランサーの作成」ボタンをクリックします。
「Application Load Balancer」の「作成」ボタンをクリックします。

基本的な設定

ロードバランサー名:Test-ALB01
スキーム:インターネット向け
IPアドレスタイプ:ipv4

Network mapping

VPC:Test-VPC
マッピング:
「ap-northeast-1a」にチェックを入れる。サブネットは「Test-PublicSubnet01」を選択する。
「ap-northeast-1c」にチェックを入れる。サブネットは「Test-PublicSubnet02」を選択する。

セキュリティグループ

セキュリティグループ:Test-SG01

リスナーとルーティング

プロトコル:HTTP
ポート:80
デフォルトアクション:TG
「ロードバランサーの作成」ボタンをクリックします。

動作確認

ロードバランサーのDNS名をコピーしてブラウザのURL欄にペーストします。

Webページが表示されます。更新ボタンを何度かクリックすると、「Web-Server01」と「Web-Server02」が表示されます。うまくバランシングされていることが確認できます。

EC2インスタンス(Web-Server01)を停止してWebページを更新すると、「Web-Server02」のみが表示されるようになります。

コメント

タイトルとURLをコピーしました