ようへいの日々精進XP

よかろうもん

今更 VPC で 複数の AZ をまたいだ ELB を試す(1)

はじめに

  • 今更 AWSELB の概要についてメモ
  • まずはマネージメントコンソールから VPC を作って VPC 内のインスタンスに対して ELBトラフィックを割り振ってみる
  • 尚、構成は可用性を考慮して複数の AZインスタンスを設置する
  • 出来ればその ELBaws cli を使って構築する記事はこちら...

ELB とは

ぱっと見は普通のロードバランスだけど、AWS ならではなのはマルチ AZ に対応していたり、他の AWS と合わせることで高い可用性を持った環境を構築することが出来る。(と思う)


参考


構成図

VPC 環境で複数の AZ をまたいだ ELB 環境は以下のようなイメージになるのかな。

f:id:inokara:20131231013817p:plain

参考にした資料内には VPCAZ の関係や とても解りやすい図があったのでそちらを参考にさせて頂いた。

AWS の Management Console からのはじめ方

全部のスクリーンショットを載せていたら大変(面倒)なの、ざっくりとしたステップとハマったポイントだけを記載する。以下はステップ。

  1. VPC を作成し、それぞれの AZ にサブネットを生成する
  2. AMI に登録済みのマイ AMI を使ってインスタンスをそれぞれのサブネットで作成する(とりあえず 1 インスタンスずつ)
  3. LoadBalancers をクリックしてロードバランサーを作成する(Create LB inside: のプルダウンでは vpc-* を選択する)
  4. Listener Configuration: で外部からアクセスするポートと関連付けるインスタンスのポートを指定する
  5. Health Check 等の設定を行う
  6. VPC 内のサブネットを選択する
  7. ELB に適用する SecurityGroup を選択、又は作成する
  8. 選択したサブネットの中から利用するインスタンスを選択する
  9. 設定内容を確認して完了!

以下、ハマった(認識不足だった)ところ。

VPC 内で AZ を分割するならサブネットを分ける

f:id:inokara:20131230225814p:plain

上記のように VPC 内に複数のサブネットを持つことが出来る。また、そのサブネットは異なる AZに配置することが出来る。

サブネットを作成したら Route Table を確認する

サブネット作成後、インスタンスをサブネットに割り当てるだけではインスタンスは外部ネットワークとの通信が出来ない((VPC 内の通信のみが可能)の通信のみが可能)。これはデフォルトでは IGWInternet Gateway)が割り当てられていない為。

サブネット作成時点。

f:id:inokara:20131231002636p:plain

IGW を割り当てた状態。

f:id:inokara:20131231003505p:plain

replace をクリックすると IGW を選択するポップアップが表示される。尚、IGW を割り当てなくても NAT インスタンスを別のサブネット(AZ)内に構築してそちらを経由してインターネットに出ていくような構成)も取れる。

VPC で ELB を利用する場合には Create LB inside は vpc-* を選択する

f:id:inokara:20131231000322p:plain

以上が自分の知識不足招いたハマりポイント。これを解決して複数の AZ を持つ VPCELB をとりあえず構築することが出来た。確認はコマンドラインから curl で確認を行った。作成された ELBDNS Namehoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com という感じになるので以下のようにアクセスする。ちなみに、あらかじめそれぞれのインスタンスnginx をインストールして DocumentRootインスタンスのホスト名を出力する index.html を設置しておいた。

curl http://hoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com

以下のように均等にインスタンスに発生している...

$ curl http://hoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
ip-10-0-1-222
$ curl http://hoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
ip-10-0-1-222
$ curl http://hoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
ip-10-0-0-220
$ curl http://hoge-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com
ip-10-0-0-220

こともあったが厳密に均等であるかは確認出来なかった。


最後に

  • 単体のインスタンスしか運用したことが無かったので VPCELB 等についてちゃんと理解出来ていないので苦労した
  • VPCELB それぞれの機能や特色を把握するところから始めているのでまだまだ AWS マスターへの道は長いw
  • aws cli を使った構築は次の記事にて...
  • まだまだ細かな機能は使いきれていない(health checkHTTPS 等)ので引き続き試す