複数の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マエストロになろう!