Amazon EC2 → Load Balancing

  • アプリケーション規模が大きくなった場合、負荷分散を検討しますが、AWSならElastic Load Balancing機能(以下 ELB)を利用して、簡単に複数のWebサーバーへ負荷分散できます。
  • ただし、少し挙動が思い通りでない部分があり、確認しました。

Availability Zoneとは

  • EC2では、各リージョンで複数のAvailability Zone(以下 Zoneと表記)を持つ設計になっています。Zoneが異なる=データセンターが別の地域にある、ということです。
  • つまり、同じ東京リージョンであっても、Zone AとZone Bは異なる地域にあるデータセンターということですから、分散させることで簡単に災害に強いシステムを構築できることになります。コンソール上で操作するだけでこんな構成を組むことができる素晴らしい仕組みだと思います。

Zoneを分けた負荷分散

  • 当然、Zoneを分けて分散させようと思います。この場合、ELBのIPアドレスは2つ返却されるようです。クライアントは好きな方を選ぶことになります。
  • ですが、このIPアドレス、実はZoneごとに1つ割り当てられているようなのです。

ZoneAのみのELB を構成

Elb01.png

  • 構成インスタンスは全て Zone Aです。(Availability Zone = ap-northeast-1a)

Elb02.png

  • この構成が落ち着いてから、確認します。

Elb03.png

176.34.23.183というIPアドレスが1つ返却されました。 アクセスすると、6台のウェブサーバーに順番に振り分けられることが確認できました。


ZoneBのインスタンスを1台追加

  • 上記のZoneAのみで構成したELBにZoneBのインスタンスを追加します。

Elb04.png

  • 下段の表「Availability Zones」に 「ap-northeast-1b」が追加されました。
  • 再度、hostコマンドで確認します。

Elb05.png

IPアドレスが2つ返却されるように変化しました。 176.34.27.202というIPアドレスが追加されたように見えます。

ZoneAのインスタンスを削除し、ZoneBのみに変更

  • 今度は、ZoneAのインスタンスを全部削除、さらに、Availability Zones から「ap-northeast-1a」を削除します。

Elb06.png

  • hostコマンドで確認すると・・・

Elb07.png

IPアドレス 176.34.27.202 のみが返却されるように変化しました。


まとめ

  • 詳しい動作仕様は公開されていないようなので、あくまで予想ですが、どうやらAvailability Zoneごとに、1つIPアドレスが割り当てられるようです。

facebook slideshare rubygems github qiita