はじめに
ELB(Elastic Load Balancing)を使用してWebサーバを冗長化します。
環境
手順
大きな流れは以下の通りです。順番に設定していきましょう。
- VPCの作成
- サブネットの作成
- インターネットゲートウェイの設定
- ルートテーブルの編集
- EC2インスタンスの作成
- ロードバランサーの設定
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」のみが表示されるようになります。
コメント