Elastic Load Balancerを使う前に知っておきたいこと

Amazon Web Servicesの超便利なロードバランサーである「Elastic Load Balancer」において2010年11月現在で解決策の無い弱点というか、どうしても「できないこと」があったのでメモ。

  1. ELBには固定IPアドレスを振ることができない
  2. ELBのIPアドレスは勝手に変わることがある
  3. 上記の理由により、DNSのAレコードでELBのIPアドレスを指定したくない
  4. 上記の理由により、DNSのCNAMEでELBのEndpointを指定するのが望ましい
  5. ホスト名の無いドメインexample.com)はCNAMEを設定できない*1

結果的に、

ということになります*2

なお、ホスト名のあるドメイン( www.example.com )でELBを使う場合は、wwwというホスト名に対してELBのEndpointをCNAMEで設定するだけでOKです。

この問題は随分前から議論されていたようだ

この問題はELB公開後2009年の3月から議論されている(リンク先英語)し、モバツイの中の人からもELBのIPアドレスが変わっちゃう件で指摘されている。しかし2010年11月に至ってもAmazon側からは特に対策が出てこないのを見ると、将来的にも対策される可能性は低いように思います。

なぜELBに固定IPを設定できないのか?

どうやら、AWSにおけるELBの負荷分散の機能を「どんだけトラフィック来ても対応できるぜ任せとけ状態」にするために必要のようだ。

ネット上の情報によると、AWSはELBの負荷に応じて動的にELBのIPアドレスを増やし、ELB自体のDNSラウンドロビンを行うことでどんだけ大量のトラフィックが来てもLoad Balancerがボトルネックにならないように出来ているらしい。参考→ The “Elastic” in “Elastic Load Balancing”: ELB Elasticity and How to Test it(リンク先英語)

というわけでCNAMEでの設定が必須になりますよと。

まとめ

ELBを使うときにはホスト名(サブドメイン)を決めておきましょう。

*1:これはAWSではなくDNSの制約だね

*2:ELBのIPアドレスが変わったことを数分単位で検知して、DNSのAレコードを動的に書き換える仕組みを構築すれば使用可能だと思う。噂ではELBのIPアドレスが変わっても1時間ぐらいアクセス可能にしておいてくれるらしいので。ただしDNSTTLを十分短くしておくこと。