2012年11月10日土曜日

ELB(スケールサイズ)とDNS(返されるIPアドレス)の関係(予想)

スズキです。

以前、下記の記事より、ELBのDNS名を名前解決して返ってくるIPアドレスは、
最大8個であることがわかりました。
【AWS発表】 Elastic Load Balancingが東京リージョンでIPv6をサポート、
新メトリクスもサポート、複数のIPアドレスを返すように

実際に、そこそこアクセス数の多いELBのDNS名を名前解決してみると、
下記のように8個(最大)のIPアドレスが帰ってきました。
$ nslookup suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
...
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 46.51.248.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.111.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 175.41.254.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.27.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.29.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.61.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.122.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.108.xxx

と言うことは、スケールした数(ELBの実体の数)がDNS名を名前解決して返ってくる
IPアドレスと予想することはできますが、そうなると、ELBは8インスタンスしか
スケールしないことになってしまいます。

そして、VPCに関してですが、ドキュメントより下記のような情報を
見つけることもできます。
Deploying Elastic Load Balancing in Amazon VPC

In order to ensure that your load balancer can scale properly,
the subnet that you attach the load balancer to should be at least a /27 CIDR block
and should have at least 20 free IP addresses in the subnet
when you attach the load balancer.

ELBが適切にスケールするように、ELBが配置されているVPCのサブネットの
ネットワークアドアドレスの範囲は、少なくても"/27"のCIDRブロックの
範囲であり、ELBを配置するときには、少なくても20個のIPアドレスが
利用可能でなければならない。
つまり、8インスタンスどころか、20インスタンス以上はスケールする可能性が
確実にあるということになります。

ということで、もう一度、同一のELBに対して名前解決をしてみると、
下記のように、更に別のIPアドレスが返ってきました。
$ nslookup suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
...
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.120.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.248.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 46.51.248.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.62.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 46.51.249.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.122.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.61.xxx
Name: suz-lab-000000000.ap-northeast-1.elb.amazonaws.com
Address: 176.34.29.xxx

ちなみに、3つのAZに配置し、全くアクセスの無いELBのDNS名を同様に名前解決すると
下記のように、二回目も同じIPアドレスが返ってきました。
$ nslookup suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.85.xxx
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.85.xxx
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.252.xxx
$
$ nslookup app-test-365558714.ap-northeast-1.elb.amazonaws.com
...
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.252.xxx
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.85.xxx
Name: suz-lab2-000000000.ap-northeast-1.elb.amazonaws.com
Address: 54.248.85.xxx
※各AZに一つずつ、ELBの実体(インスタンス)があることも予想できます。

結論として、
ELBの実体(インスタンス)は8個以上スケールし、その場合は、その中から、
あるルールで選ばれた8個のIPアドレスが、DNS名の名前解決時に返される。
と予想できるのではないのでしょうか?

真実は、中の人のみぞ知る、ですね...
--------
http://www.suz-lab.com

0 コメント: