はじめに
- 今更
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
等)ので引き続き試す