Route 53でELBと通常のサーバをアクセス分散させてみる

下記のような構成をRoute 53の重みづけラウンドロビンでアクセス分散できるか試しました。
f:id:kenjifunasaki:20130212190700p:plain
結果としては、アクセス分散できます。

ただ1点注意が必要なのは、Route 53でELBにエイリアス機能を使ってアクセスを割り振る場合に、TTLの値をRoute 53側で現状セットできないことです。

フォーラムに以下のような説明がありました。

Currently, Amazon Route 53 supports aliases only for routing traffic to
Elastic Load Balancing domains. You cannot set the time to live (TTL) 
for alias records; Amazon Route 53 honors the Elastic Load Balancing TTL.
For the current TTL value for Elastic Load Balancing, see the introduction 
to "Using Domain Names With Elastic Load Balancing."

https://forums.aws.amazon.com/thread.jspa?messageID=259743

ELB はデフォルトで60秒のTTLがセットされているので、今回は通常のインスタンス側に割り振る場合もTTLを60秒にしました。
f:id:kenjifunasaki:20130212192052p:plain

重みづけラウンドロビンによって、ELBと通常インスタンスへのアクセスを分散させる設定をしています。

これをdigコマンドを使って、同じホスト名に対してELBと通常インスタンスのIPが表示されるか確認してみました。

dig server3.funasaki.info
(途中省略)
server3.funasaki.info.  60       IN      A       54.248.139.176
(省略)

通常インスタンス:54.248.139.176
ELBの(この時点での)IP:54.248.223.170

※ELBのIPアドレスは変更することがあるので、IPアドレスDNSに登録しないこと!

60とあるのは、TTLの時間が60秒という意味。これが、digコマンドを実行するたびに秒数が減っていくのがわかります。

dig server3.xxxxxxx.info
(途中省略)
server3.xxxxxxx.info.  50       IN      A       54.248.139.176
(省略)
dig server3.xxxxxxx.info
(途中省略)
server3.xxxxxxx.info.  30       IN      A       54.248.139.176
(省略)
dig server3.xxxxxxx.info
(途中省略)
server3.xxxxxxx.info.  5       IN      A       54.248.139.176
(省略)

60秒経過後、再度digコマンドを実行すると、以下のように今度はELB側のIPアドレスを返すようになりました。

server3.xxxxxxx.info.  60      IN      A       54.248.223.170

このように、ちゃんとIPが変わっているので、負荷分散できますね!
DNSのキャッシュが効いてて、IPが変わらない場合もあるので要注意ですが!