AWSでELB環境を作るための覚書


はじめに

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
    • AAAnode02@AAASubnet2
    • AAAnode03@AAASubnet3
    • ロードバランサ AAAELB01
      • ターゲットグループ AAAELBTARG01
        • AAAnode01,AAAnode02,AAAnode03
      • セキュリティグループ AAASgELB01
        • HTTP 80/TCP from 0.0.0.0/0

VPCの作成

  • 東京リージョンでVPC作成画面を開きます。名前とCIDRを入力してVPC作成ボタンを押します。
  • 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
  • この調子でEC2を3つ作ります。

ロードバランサを作る。

  • ロードバランサの画面でロードバランサの作成画面を開きます。Application Load Balancerの作成ボタンをクリックします。
  • ロードバランサに名前を付けます。
  • VPCとアベイラビリティゾーンを選んで次の手順に進みます。
  • セキュリティグループを作って次の手順に進みます。ここではHTTPだけを通すことにしました。EC2用に作ったセキュリティグループとは別にします。
  • ターゲットグループに名前を付けます。ターゲットの種類はインスタンスで。
  • ターゲットグループにターゲットとしてEC2の3つを追加して、次の手順へ進みます。
  • 確認してロードバランサを作ります。
  • ロードバランサが完成しました。

接続テスト

  • 作成したロードバランサを通してEC2に接続できることが確認できました。
  • EC2のうち、2台を止めても問題なく上記の接続ができました。

おわりに

ロードバランサは負荷分散と、データセンターであるAZを分けることによって災害対策になるということです。改善点が見つかったら少しずつ修正していきたいと思います。

注意点

  • この構成ではロードバランサ経由でなく、EC2に直接インターネットから接続できるようになっているので、完成後にEC2のセキュリティグループでHTTPを閉じるのがよいと思われます。
  • 基本的にAWSの無料枠を使っていろいろ試しているのですが、この試みをした後にELBを動かしっぱなしにしたことにより、料金が発生していました。EC2も若干はみ出しております。気をつけねば。
    • 参考:Application Load Balancer が実行される時間に対して 1 時間単位または 1 時間未満で、また時間ごとのロードバランサーキャパシティーユニット (LCU) 使用量で課金されます。