はじめに
- 今更
AWSのELBの概要についてメモ - まずはマネージメントコンソールから
VPCを作ってVPC内のインスタンスに対してELBでトラフィックを割り振ってみる - 尚、構成は可用性を考慮して複数の
AZにインスタンスを設置する - 出来ればその
ELBをaws cliを使って構築する記事はこちら...
ELB とは
AWSにおいてEC2へのアプリケーショントラフィックをロードバランスするサービス- 複数の
AZにまたいでトラフィックをバラシングすることが出来る - 構成された
EC2インスタンスに障害を検知した場合には自動的に正常なインスタンスにトラフィックを割り振ることが出来る
ぱっと見は普通のロードバランスだけど、AWS ならではなのはマルチ AZ に対応していたり、他の AWS と合わせることで高い可用性を持った環境を構築することが出来る。(と思う)
参考
- [AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
- 玉川憲 (Ken Tamagawa) - Amazon Web Services + Follow ELB & Auto Scaling & CloudWatch 詳細 -ほぼ週刊AWSマイスターシリーズ第5回-
- [AWSマイスターシリーズ] Amazon Virtual Private Cloud (VPC)
- Amazon VPCトレーニング-NATインスタンスの作成方法
構成図
VPC 環境で複数の AZ をまたいだ ELB 環境は以下のようなイメージになるのかな。

参考にした資料内には VPC や AZ の関係や とても解りやすい図があったのでそちらを参考にさせて頂いた。
AWS の Management Console からのはじめ方
全部のスクリーンショットを載せていたら大変(面倒)なの、ざっくりとしたステップとハマったポイントだけを記載する。以下はステップ。
VPCを作成し、それぞれのAZにサブネットを生成するAMIに登録済みのマイAMIを使ってインスタンスをそれぞれのサブネットで作成する(とりあえず 1 インスタンスずつ)LoadBalancersをクリックしてロードバランサーを作成する(Create LB inside:のプルダウンではvpc-*を選択する)Listener Configuration:で外部からアクセスするポートと関連付けるインスタンスのポートを指定するHealth Check等の設定を行うVPC内のサブネットを選択するELBに適用するSecurityGroupを選択、又は作成する- 選択したサブネットの中から利用するインスタンスを選択する
- 設定内容を確認して完了!
以下、ハマった(認識不足だった)ところ。
VPC 内で AZ を分割するならサブネットを分ける

上記のように VPC 内に複数のサブネットを持つことが出来る。また、そのサブネットは異なる AZに配置することが出来る。
サブネットを作成したら Route Table を確認する
サブネット作成後、インスタンスをサブネットに割り当てるだけではインスタンスは外部ネットワークとの通信が出来ない((VPC 内の通信のみが可能)の通信のみが可能)。これはデフォルトでは IGW(Internet Gateway)が割り当てられていない為。
サブネット作成時点。

IGW を割り当てた状態。

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

以上が自分の知識不足招いたハマりポイント。これを解決して複数の AZ を持つ VPC で ELB をとりあえず構築することが出来た。確認はコマンドラインから curl で確認を行った。作成された ELB の DNS Name は hoge-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
こともあったが厳密に均等であるかは確認出来なかった。
最後に
- 単体のインスタンスしか運用したことが無かったので
VPCやELB等についてちゃんと理解出来ていないので苦労した VPCやELBそれぞれの機能や特色を把握するところから始めているのでまだまだAWSマスターへの道は長いwaws cliを使った構築は次の記事にて...- まだまだ細かな機能は使いきれていない(
health checkやHTTPS等)ので引き続き試す