bekkou68 の日記

Gogengo! や IT 技術など。

Amazon ELB を作成し Amazon EC2 への負荷を分散する設定

はじめに

Amazon ELB を作成し Amazon EC2 への負荷を分散する設定をメモします。

ゴール

Amazon ELB に Amazon EC2 のアプリインスタンスが 2つ紐づいた状態で負荷分散されていること。

前提

Amazon EC2 のアプリインスタンスは 1つできているとします(以下、インスタンスA と呼ぶ)。インスタンスのつくりかたはこちら。また、インスタンスA で何らかのサーバが立ち上がっていてブラウザから接続できるとします。
自分のプロジェクトの名前は myproject とします。

大まかな手順

インスタンスA がぶらさがった ELB を作成して接続を確認(2013年09月20日更新)

AWS Management Console へ行き Services > EC2 を選択。

左側のメニューの Load Balancers を選択。Create Load Balancer ボタンを押す。

ウィザード「DEFINE LOAD BALANCER」において以下を入力して Continueボタンを押す。

  • Load Balancer Name: myproject

ウィザード「CONFIGURE HEALTH CHECK」において以下を入力して Continueボタンを押す。

  • Ping Protocol: HTTP
  • Ping Port: 80
  • Ping Path: ex. /health
    • APIを用意しておく。DB 接続を確認できるとベター(ex. ActiveRecord の Model.first を実行する)
  • Advanced Options は適宜変更(以下は例)
    • Response Timeout: 5 sec
    • Health Check Interval: 0.5 min
    • Unhealthy Threshold: 2
    • Healthy Threshold: 2

ウィザード「ADD EC2 INSTANCES」において、つくったインスタンスを追加する。

ウィザード「REVIEW」において確認して Create ボタンを押す。

つくった ELB を選択して Instances タブを選択。Status が Out of Service となっているが、10分ほど待つと In Service になる(それまではインスタンスの登録状況を見に行くと "Instance registration is still in progress" と表示される)。

In Service になったら ELB の DNS Name の Aレコードのドメインにブラウザからアクセスして、アプリインスタンスに接続できることをログなどで確認。

インスタンスA のイメージからインスタンスB を作成

ゴール: インスタンスA からインスタンスB を作成する。

インスタンスA のイメージを作成

Amazon EC2 コンソールにログイン。Inscance > Actions > Create Image (EBS AMI)。

ダイアログが開くので以下を入力:

  • Image Name: ex. "プロジェクト名-日付": myproject-20130402
  • no reboot にチェックをつける # ONにすると再起動が走って止まる恐れがあるので注意

OK 押す。しばらく待つ(10分くらいかかる)。

つくったイメージからインスタンスを作成する

Instance > Launch Instance ボタンを押す。Classic Wizard を選択。

My AMIs を選択。

Instance Type・Availability Zone・セキュリティグループを適宜選択。基本的にインスタンスA と一緒で OK。

つくったインスタンスSSHログインできることを確認できればOK。

インスタンスB を ELB にぶらさげて負荷分散されることを確認

ELB を選択。Instancesタブを選択。「+/-」ボタンを押す。インスタンスを選択して Saveボタンを押す。

これで、インスタンスA/B にアクセスが分散されることをログなどで確認できれば完了!