ショッピングカート ASPの豊作くんカートサービスを開始する上で、将来高負荷になる事を予想し、それなりの負荷分散が出来るように施してある。現時点で考えうる将来の機器増設に備えた。
その一つがDNSラウンドロビンである。
このDNSラウンドロビンは大きなサイトは殆ど採用しているようである。例えば NS LOOKUP にてヤフー等を調べると、複数のIPアドレスが出てくる。
今回のショッピングカート ASP サービスは、最初に2台のWebサーバを用意してある。
DNSラウンドロビンは、簡単に言えばブラウザからのアクセスがあると、登録してあるIPアドレスを順番に渡して、サーバの位置を知らせる機能である。複数登録してあればあるほど、登録されたIPアドレス(サーバ)にアクセスが振り別けられる仕組みである。
自社で管理しているDNSサーバ若しくは、自由に Zone 情報を書き換えられるDNSサーバと複数のグローバルIPアドレスを持っていれば、実現する機能である。DNSのキャッシュが有効な場合、その後のアクセスはDNSを参照せずに、同じマシンを見に行く形となる。
書き方は・・・Zoneファイルに
xxx.housaku.net IN A 192.168.1.000
xxx.housaku.net IN A 192.168.1.111
xxx.housaku.net IN A 192.168.1.222
として、同じホスト名で複数のIPアドレスを書いてやればよい。
もちろんDNSの再起動が必要となる。
では、アクセスしているWebサーバが落ちた状態になった場合はどうなるのか?
この場合、最近のPCブラウザであれば、もう一度DNSを参照し、アクセス出来るサーバのIPアドレスを取得する機能が付いているので、不慮の事故により1台のWebサーバが落ちたとしても、もう一台にアクセスが集中する事になる。ただし、現在の携帯端末(キャリアのプロクシだと思うが・・・)ではアクセスしているサーバが落ちた場合は、そのサーバが復旧するまではアクセスが出来ない事になる。
これまでの経験上、サーバがトラブルに見舞われ、何時間もサイトを止めてしまった経験は無い。また、今回は触れないが、仮にサーバが故障してしまい使えなくなった状態でも、新たなサーバを用意し2〜3時間程度で復旧できるような状態を作りあげている為、最悪の事態でも数時間で復旧する事が可能である。この場合においても、PCで閲覧してきているユーザーはもう一台のサーバへ振り分けられるし、携帯端末のユーザーの半分は(およそ)もう一台へ振り分けられる。実際には作業に入る前にDNSを書き換えてしまい、故障しているサーバへの振り分けを行わないようにしておけば、長時間のサイト停止は避けることが出来る。
DNSラウンドロビンという機能、今までは使っていなかったが、実際に使ってみるとコストがかからずに負荷分散が行えるとても素晴らしい機能だと思う。
ショッピングカート ASP サービスとして、サービスが停止しにくい環境を構築するのは必須である。
これ以外にも負荷分散や、停止しにくい環境を構築を行っている。
少しづつ綴っていけたらと思う。