複数のELBから1つのAmazon EC2へリクエストを振り分ける
AWS Management Consoleからはできない
AWS Management ConsoleのLoad Balancer画面では、ELBに割り当てられていないAmazon EC2インスタンス一覧から選択する仕様になっていますが、コマンドラインからであれば、既にELBへ登録済みのAmazon EC2も登録することができます。今回は実際に登録する手順と動作の確認をご紹介します。
2つのELBの作成
まずは、2つのELBを作成します。
$ elb-create-lb MyLB1 --headers --listener "lb-port=80,instance-port=80,protocol=HTTP" \ > --availability-zones ap-northeast-1a,ap-northeast-1b --region ap-northeast-1 DNS_NAME DNS_NAME DNS_NAME MyLB1-1670803265.ap-northeast-1.elb.amazonaws.com $ elb-create-lb MyLB2 --headers --listener "lb-port=80,instance-port=80,protocol=HTTP" \ > --availability-zones ap-northeast-1a,ap-northeast-1b --region ap-northeast-1 DNS_NAME DNS_NAME DNS_NAME MyLB2-1915723807.ap-northeast-1.elb.amazonaws.com
次にインスタンスを起動します。このインスタンスは、起動直後にApacheを起動してHTTPによる死活監視ができる状態のカスタムAMIを使っています。
$ ec2-run-instances ami-9a54e19b -g default -k mykey1 -t t1.micro --region ap-northeast-1 RESERVATION r-82424f83 771293814336 default INSTANCE i-1ce4f41d ami-9a54e19b pending mykey1 t1.micro 2011-10-26T16:35:55+0000 ap-northeast-1b aki-d209a2d3 monitoring-disabled ebs paravirtual xen sg-06c26807 default
2つのELBから1つのAmazon EC2インスタンスを登録する
実際に、同じEC2インスタンスIDを指定して登録します。問題なく登録できました。
$ elb-register-instances-with-lb MyLB1 --instances i-1ce4f41d --region ap-northeast-1 INSTANCE_ID i-1ce4f41d $ elb-register-instances-with-lb MyLB2 --instances i-1ce4f41d --region ap-northeast-1 INSTANCE_ID i-1ce4f41d
ELBの状態を確認する
In Serviceは繋がっているということです。問題なさそうですね。
$ elb-describe-instance-health MyLB2 --region ap-northeast-1 INSTANCE_ID i-1ce4f41d InService N/A N/A $ elb-describe-instance-health MyLB1 --region ap-northeast-1 INSTANCE_ID i-1ce4f41d InService N/A N/A
最後にELBのURLからアクセスできるか確認します。OK!
$ curl http://MyLB1-1670803265.ap-northeast-1.elb.amazonaws.com/ $ curl http://MyLB2-1915723807.ap-northeast-1.elb.amazonaws.com/
まとめ
AWS Management Consoleは日々進化していますが、全ての機能を使いこなしたい方はコマンドラインからのAPI接続がお勧めです。コマンドを使いこなしてAPIマエストロになろう!