はじめに
EC2を東京リージョンの3つのAZに作って、ロードバランサ(ELB)でアクセスを分散するようにします。
全体概要
下記のツリーのようにオブジェクトを作っていきます。「AAA」は任意の名前に読み替えしてください。
- VPC AAAvpc01 10.0.0.0/16 Tokyo VPCにインターネット接続を可能にして、3つのAZにそれぞれサブネットを作ります。
- ルートテーブル AAARouteTable1
- インターネットゲートウェイ AAAInternetGW1 0.0.0.0/0
- サブネット
- AAASubnet1 10.0.0.0/20 AZ:ap-northeast-1a
- AAASubnet2 10.0.16.0/20 AZ:ap-northeast-2c
- AAASubnet3 10.0.32.0/20 AZ:ap-northeast-3d
- EC2 3つのサーバをそれぞれ↑のサブネットに置いて、Load Barancerでつなぎます。
- AAAnode01@AAASubnet1
- セキュリティグループ AAASgEC01
- SSH 22/TCP from 0.0.0.0/0
- HTTP 80/TCP from 0.0.0.0/0
- セキュリティグループ AAASgEC01
- AAAnode02@AAASubnet2
- AAAnode03@AAASubnet3
- ロードバランサ AAAELB01
- ターゲットグループ AAAELBTARG01
- AAAnode01,AAAnode02,AAAnode03
- セキュリティグループ AAASgELB01
- HTTP 80/TCP from 0.0.0.0/0
- ターゲットグループ AAAELBTARG01
- AAAnode01@AAASubnet1
VPCの作成
インターネットゲートウェイの作成
- 名前を入れて作成ボタンを押します。
- インターネットゲートウェイができました。このままVPCにアタッチします。
- 作成したVPCを選んでインターネットゲートウェイのアタッチボタンを押します。
- アタッチされました。
サブネットの作成
- サブネット作成画面を開きます。
- サブネット名、アベイラビリティゾーン(AZ)およびCIDRを入力します。
- 新しいサブネットを追加ボタンを押して、次のサブネットの情報を入力します。
- もう一回新しいサブネットを追加ボタンを押して、最後のサブネットの情報を入力したら、サブネットを作成ボタンを押します。
- Subnetができました。
ルートテーブルの編集
- ルートテーブルはVPC作成時に作られるので、これを編集します。
- わかりやすいように名前を付けます。
- アクションからサブネットの編集を選びます。3つのサブネットを選択して保存ボタンを押します。
- ルートの編集画面でインターネットゲートウェイを追加します。
- ゲートウェイの追加が完了しました。
サーバの作成
EC2サーバを3つ作って、ロードバランサをかぶせます。
EC2を作成する(3つのサブネットにそれぞれ一つずつ作ります)
- EC2のインスタンス画面からインスタンスを起動画面を開きます。Amazon LinuxのX86で選択ボタンを押します。
- インスタンスタイプはt2.microを選択して、次のステップに進みます。
- VPC、サブネットおよび自動割り当てパブリックIPを指定して、次のステップに進みます。
- ストレージはそのままで、次のステップに進みます。
- タグの追加で名前だけ付けて、次のステップに進みます。
- セキュリティグループに名前を付けて、HTTPを追加して確認と作成ボタンを押します。2つめのEC2サーバを作るときは既存のセキュリティグループとして再利用できます。
- 確認画面で確認して起動ボタンを押します。
- キーペアを選んでインスタンスの作成を押します。
- インスタンスの作成が開始されました。
- 作ったEC2でhttpdを立ち上げておきます。
sudo yum install httpd -y
sudo systemctl enable httpd.service
sudo usermod -a -G apache ec2-user
sudo systemctl start httpd
ロードバランサを作る。
- ロードバランサの画面でロードバランサの作成画面を開きます。Application Load Balancerの作成ボタンをクリックします。
- ロードバランサに名前を付けます。
- VPCとアベイラビリティゾーンを選んで次の手順に進みます。
- セキュリティグループを作って次の手順に進みます。ここではHTTPだけを通すことにしました。EC2用に作ったセキュリティグループとは別にします。
- ターゲットグループに名前を付けます。ターゲットの種類はインスタンスで。
- ターゲットグループにターゲットとしてEC2の3つを追加して、次の手順へ進みます。
- 確認してロードバランサを作ります。
- ロードバランサが完成しました。
接続テスト
おわりに
ロードバランサは負荷分散と、データセンターであるAZを分けることによって災害対策になるということです。改善点が見つかったら少しずつ修正していきたいと思います。
注意点
- この構成ではロードバランサ経由でなく、EC2に直接インターネットから接続できるようになっているので、完成後にEC2のセキュリティグループでHTTPを閉じるのがよいと思われます。
- 基本的にAWSの無料枠を使っていろいろ試しているのですが、この試みをした後にELBを動かしっぱなしにしたことにより、料金が発生していました。EC2も若干はみ出しております。気をつけねば。
-
参考:Application Load Balancer が実行される時間に対して 1 時間単位または 1 時間未満で、また時間ごとのロードバランサーキャパシティーユニット (LCU) 使用量で課金されます。
-
参考:Application Load Balancer が実行される時間に対して 1 時間単位または 1 時間未満で、また時間ごとのロードバランサーキャパシティーユニット (LCU) 使用量で課金されます。