はじめに
ELB(Elastic Load Balancing)を使用してWebサーバを冗長化します。
環境

手順
大きな流れは以下の通りです。順番に設定していきましょう。
- VPCの作成
- サブネットの作成
- インターネットゲートウェイの設定
- ルートテーブルの編集
- EC2インスタンスの作成
- ロードバランサーの設定
VPCの作成
AWSマネジメントコンソールからVPCサービスにアクセスします。
左サイドバーから「VPC」をクリックします。「VPCを作成」ボタンをクリックします。
以下の通り入力します。
名前タグ:VPC-Test
IPv4 CIDR ブロック:10.0.0.0/16
IPv6 CIDR ブロック:IPv6 CIDR ブロックなし
テナンシー:デフォルト
「VPCを作成」ボタンをクリックします。
サブネットの作成
左サイドバーから「サブネット」をクリックします。「サブネットを作成」ボタンをクリックします。
以下の通り入力します。
VPC ID:VPC-Test
サブネット名:Subnet-01
アベイラビリティゾーン:アジアパシフィック(大阪)/ap-northeast-3a
IPv4 CIDR ブロック:10.0.1.0/24
「新しいサブネットを追加」ボタンをクリックします。
サブネット名:Subnet-02
アベイラビリティゾーン:アジアパシフィック(大阪)/ap-northeast-3b
IPv4 CIDR ブロック:10.0.2.0/24
「サブネットを作成」ボタンをクリックします。
インターネットゲートウェイの設定
左サイドバーから「インターネットゲートウェイ」をクリックします。「インターネットゲートウェイの作成」ボタンをクリックします。
以下の通り入力します。
名前タグ:InternetGateway-Test
「インターネットゲートウェイの作成」ボタンをクリックします。
「アクション」ボタンから「VPCにアタッチ」をクリックします。
使用可能な VPCは、「VPC-Test」を選択します。
「インターネットゲートウェイのアタッチ」ボタンをクリックします。
ルートテーブルの設定
左サイドバーから「ルートテーブル」をクリックします。VPCに「VPC-Test」が入っている項目を選択します。
「ルート」タブをクリックします。
「ルートの編集」ボタンをクリックします。
「ルートの追加」ボタンをクリックします。
以下の通り入力します。
送信先:0.0.0.0/0
ターゲット:InternetGateway(InternetGateway-Test)
「変更を保存」ボタンをクリックします。
「サブネットの関連付け」タブをクリックします。
「サブネットの関連付けを編集」ボタンをクリックします。
「subnet-01」と「subnet-02」にチェックを入れて「関連付けを保存」ボタンをクリックします。
「閉じる」ボタンをクリックします。
EC2インスタンスの作成
EC2サービスにアクセスします。まずは1台目を作成します。
「インスタンスを起動」ボタンから「インスタンスを起動」をクリックします。
インスタンスタイプと詳細設定
「Amazon Linux 2 AMI (HVM), SSD Volume Type」の「64 ビット (x86)」にチェックを入れます。「選択」ボタンをクリックします。
タイプは「t2.micro」にチェックが入っていることを確認し「次のステップ:インスタンスの詳細の設定」ボタンをクリックします。
以下の通り入力します。
・ネットワーク:VPC-Test
・サブネット:Subnet-01
・自動割り当てパブリック IP:有効
高度な詳細の中にある「ユーザーデータ」は以下をコピペして下さい。
#!/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
ストレージの追加
「次のステップ:ストレージの追加」ボタンをクリックします。
タグの追加
「次のステップ:タグの追加」ボタンをクリックします。
以下の通り入力します。
・キー:Name
・値:Web-Server01
セキュリティグループの設定
「次のステップ:セキュリティグループの設定」ボタンをクリックします。
・セキュリティグループ名:Web-Server-SG
「ルールの追加」ボタンをクリックします。
・タイプ:HTTP
・プロトコル:TCP
・ポート範囲:80
・ソース:カスタム 0.0.0.0/0
「ルールの追加」ボタンをクリックします。
・タイプ:HTTPS
・プロトコル:TCP
・ポート範囲:443
・ソース:カスタム 0.0.0.0/0
「確認と作成」ボタンをクリックします。
インスタンスの起動
「起動」ボタンをクリックします。
キーペアはすでに作成済みなら既存、未作成なら新規に作成します。
「インスタンスの作成」ボタンをクリックします。
続けて2台目を作成します。
インスタンスタイプと詳細設定
「Amazon Linux 2 AMI (HVM), SSD Volume Type」の「64 ビット (x86)」にチェックを入れます。「選択」ボタンをクリックします。
タイプは「t2.micro」にチェックが入っていることを確認し「次のステップ:インスタンスの詳細の設定」ボタンをクリックします。
以下の通り入力します。
・ネットワーク:VPC-Test
・サブネット:Subnet-02
・自動割り当てパブリック IP:有効
高度な詳細の中にある「ユーザーデータ」は以下をコピペして下さい。
#!/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
ストレージの追加
「次のステップ:ストレージの追加」ボタンをクリックします。
タグの追加
「次のステップ:タグの追加」ボタンをクリックします。
以下の通り入力します。
・キー:Name
・値:Web-Server02
セキュリティグループの設定
「次のステップ:セキュリティグループの設定」ボタンをクリックします。
・セキュリティグループの割り当て:既存のセキュリティグループを選択する
・名前:Web-Server-SGにチェックを入れる。
「確認と作成」ボタンをクリックします。
インスタンスの起動
「起動」ボタンをクリックします。
キーペアはすでに作成済みなら既存、未作成なら新規に作成します。
「インスタンスの作成」ボタンをクリックします。
ロードバランサーの設定
EC2サービスにアクセスします。左サイドバーから「ロードバランサー」をクリックします。「ロードバランサーの作成」ボタンをクリックします。
「Application Load Balancer」の「作成」ボタンをクリックします。
以下の通り入力します。
【基本的な設定】
・名前:elb-test
・スキーム:インターネット向け
・IPアドレスタイプ:ipv4
【リスナー】
・ロードバランサーのプロトコル:HTTP
・ロードバランサーのポート:80
【アベイラビリティゾーン】
・VPC:VPC-Test
・アベイラビリティゾーン:Subnet-01とSubnet-02の両方にチェックを入れる
【タグ】
・キー:Name
・値:elb-test
「次の手順:セキュリティ設定の構成」ボタンをクリックします。
「次の手順:セキュリティグループの設定」ボタンをクリックします。
・「Web-Server-SG」にチェックを入れます。
「次の手順:ルーティングの設定」ボタンをクリックします。
【ターゲットグループ】
・名前:elb-target
・ターゲットの種類:インスタンス
【ヘルスチェック】
・正常のしきい値:3
・非正常のしきい値:3
・タイムアウト:5
・間隔:10
「次の手順:ターゲットの登録」ボタンをクリックします。
インスタンス(Web-Server01とWeb-Server02)の両方にチェックを入れて「登録済みに追加」ボタンをクリックします。
「次の手順:確認」ボタンをクリックします。
「作成」ボタンをクリックします。
動作確認
DNS名をコピーしてブラウザのURL欄にペーストします。

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

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