September 12, 2009
EC2には、Elastic Load Balancingというお手軽ロードバランサーサービスがあります。
これはコマンドから簡単にWebサーバーを冗長化できる手段で、モバツイッターでも利用させてもらっているのですが、最近、朝起きると、IPアドレスが変わってしまっていることがあります。
Elastic Load Balancingを設定すると、EC2用のドメイン名が割り当てられて、それに対応するグローバルIPが一つ割り当てられますが、ドメインとIP間は、どうやらダイナミックDNSとして設定されているらしく何かの事情でIPアドレスが変わることがわかりました。
想像ですが、障害等があると引き継がれて切り替わるのでしょうか。
EC2は単体のサーバーインスタンスは、固定IPを割り当てられますが、おそらくElastic Load Balncingには今のところ固定IPを割り当てることはできないようです。
これが設定如何では大変困ったことになります。
ロードバランサーでWebサーバを振り分ける場合、DNSの振り先にロードバランサーのIPを設定するので、原則的にIPが変わってしまった時には設定を変えねばなりません。
DNSには、CNAMEという設定で、他のドメイン名へのエイリアスを貼ることができるので、「EC2用のドメイン名」に割り当てることで呼び出すことができるのですが、CNAMEが割り当てられるのは、Aレコードに対してのみのようです。
とDNS用語で意味不明だと思うので、こうなります。
www.movatwitter.jpには、CNAMEが割り当てられる。
movatwitter.jp(ドメイン名そのもの)には、IPしか書けない。(CNAME割り当て不可)
すなわち、movatwitter.jpにはIPアドレスしか設定できず、ダイナミックに変更されるEC2のElastic Load Balancingでは都合が悪いわけです。
ということで、今日、朝起きたら、「http://movatwitter.jp」のIPアドレスが変わっていて、1時間ちょっとモバツイッターに接続できない状態が続いてしまいました。
EC2を使って、Webサイトを作った場合に、「http://○○○.com」などでアクセスされた場合の措置を考えておく必要があります。
イマドキは、Yahoo!の検索インデックスにwww.が自動補完されちゃうとか、wwwあり・なしはどっちかに寄せるべきというSEOのセオリーから、「http://www.○○○.com」を正式のドメインにすることが多いと思います。
しかし、それにしても、「http://○○○.com」自体を接続できないケースにするのか、というのは考えどころです。どうにかApacheにまでアクセスが届けば、www.にリダイレクトさせてしまうことはできるからです。
もしIPが変わっても接続できるようにすることを重視するのであれば、「http://○○○.com」にアクセスされた時に、
・Apacheなどが反応できる専用の固定IPサーバを置く
または、
・最悪「http://○○○.com」はアクセスできなくても良いや、と割り切る。(IPが変わったら都度DNSの設定を直す)
かのどちらかです。
モバツイッターも、「http://movatwitter.jp」にしていたので、この問題は無視できません。
対策としては、以下の2つにしました。
1.ユーザーさんに、www.movatwitter.jpでの再ブックマークをお願いする。
2.@レコード(ドメインそのもの)のTTLを短くして、IPが変わってしまった場合はなるべく早く対処する。
一瞬、movatwitter.jpへのアクセスは、家の固定IPのサーバに降ろうかと思いましたが、今更、難しい部分もあります。でも、ユーザー登録のことを考えると一旦家のサーバからwww.movatwitter.jpに流した方が良いかも。。。移行をお願いして、しばらく経ってから考えます。
こういうのはサイト設計時に考慮されているに超したことはありません。
なお、ユーザーさんに向けては、こんな画面案内をしています。
多分、誰も気がついてくれないと思うので、自分から書いておくと
この文字フォントはアナログTVに表示されている「アナログ」を意識して作りましたw
初めまして。いつも楽しみに拝見しています。
ゾーン名と同じドメイン名であってもCNAMEは設定可能であるような気がするのですが、駄目でしょうか?
普通にwww.***.jpに設定するのと同じように、
***.jpにもCNAMEを設定してあげたら、いけるような気がします。
ドメイン転送サービスをつかわれては?