サーバーの負荷分散について。


最近blogやホムペレンタルとかでも、
http://○○.xxx.com/というサブドメイン系が
主流になっています。

この場合、DNSでワイルドカードを使って
http://xxx.com/○○/へとアクセスしていると思うのですが、
どのように負荷分散しているのでしょうか?

fc2のように○○.blog22.fc2.comと、blog22というのを挟めばサーバーごとにわけていける気がしますが、
○○.seesas.jp系だと、どうなってるのだろう、とよくわかりません。


blogを○○.seesaa.jpというような形でレンタルしているサイトの(ameba.jp/○○ という形のものも含めて)負荷分散について、
仮説などいろいろ知りたいと思っています。

今の自分では、あまりしっくりくる方法が思いつかないです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/07/09 15:20:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:nyankochan No.1

回答回数323ベストアンサー獲得回数9

ポイント27pt

http://release.seesaa.net/article/3676368.html

に一台のPCサーバーで運用可能な・・・って書いてあるのから予想するに。

入口サーバー(インターフェースプログラムなど)

  ↓

基本DBサーバー(ユーザーデータ・記事DBアドレスデータなど)

  ↓

記事DBサーバー1・記事DBサーバー2・記事DBサーバー3

こんな感じなんじゃないでしょうか。

どこかのサーバー構築BBSにも議題として載っていましたが、

実際には「○○.db1.seesaa.jp」や「○○.db2.seesaa.jp」を

「○○.seesaa.jp」という一つのサーバーに見立てるのは簡単な

ようです。全て中で処理してしまえばですが。

fc2のような形だと、

入口サーバー

  ↓

記事DBサーバー1・記事DBサーバー2・記事DBサーバー3

と、かなり浅い感じになってるんじゃないかな~と。

fc2もちょっと手を加えれば「○○.fc2.com」で運用可能かと思いますが、

その場合は、○○の部分が同じブログは共存できません。

aa.blog01.fc2.com

aa.blog02.fc2.com

当然ながら、「○○.db1.seesaa.jp」と「○○.db2.seesaa.jp」

とDBサーバー分けた場合でもそれぞれに同じ○○が入ることは無いです。


というのでどうでしょうか?

id:onigirin

どうもありがとうございます。

「○○.db1.seesaa.jp」や「○○.db2.seesaa.jp」を

「○○.seesaa.jp」に見立てることができるとは・・・。

この可能性は高いですねぇ。

この手法はロードバランサとかじゃなくて出来るなら、すごく便利そうですね。

ちょっと調べてみますね。

2007/07/03 15:04:56
id:kunkichi No.2

回答回数20ベストアンサー獲得回数0

ポイント27pt

最初にこういうのは様々な実装方法があるため、この場で全てを説明するのは少し難しいということだけご了承ください。

DNSのワイルドカードは、単に複数のURLパターンに対して同じIPを返すだけだと思いますので、おっしゃるようなディレクトリの振り分けは出来ないと思っています。

サブドメインでアクセスした場合にそのドメイン配下の特定のディレクトリにアクセスするような挙動ですが、DNSでワイルドカードではなく、Webサーバ側で名前ベースのバーチャルホストを行うのが一般的ではないかと思います。

・名前ベースバーチャルホストの場合

- DNSでは下記のどれも同じIPアドレスを返す

aaa.xxx.com - XXX.XXX.XXX.XXX

bbb.xxx.com - XXX.XXX.XXX.XXX

ccc.xxx.com - XXX.XXX.XXX.XXX

- Webサーバ側では問い合わせてきたURLごとにコンテンツ参照ディレクトリを変える

aaa.xxx.com - /xxx.comのドキュメントルート/aaa

bbb.xxx.com - /xxx.comのドキュメントルート/bbb

ccc.xxx.com - /xxx.comのドキュメントルート/ccc

DNSワイルドカードだけでは無理だと思っているのですが、DNSワイルドカードとこれを『組み合わせて』使うことは可能かと思います。(その場合DNS登録や設定変更の手間が省けるというメリットがありますね)

で負荷分散の話ですが、

fc2の例は負荷分散というよりは単に管理的な問題でURLレベルでユーザごとにサーバを分けてるだけ(おそらく1サーバごとに収容できるユーザ数が決まっているのだと思いますが)という気がします。おおざっぱなユーザ数という観点では負荷分散できているのかもしれませんが、例えば、アクセス数が極端に多いブログユーザが一人でもそのサーバに収容されていた場合、そのサーバの負荷はもうどうしようもありません。厳密な意味では負荷分散ではないです。

じゃあfc2は負荷分散できていないのか?ということではなくて、内部で負荷分散の仕組みは存在しているのではないかと思います。例えば以下。

サーバーロードバランス - wikipedia

大規模サイトでは珍しいことではと思いますし。seesar.jpも似たようなことをやってるのかもしれないと思います。

質問の内容からすると、URLとDNSの部分から疑問を持たれたようですね。URLとDNSももちろん関係あるのですが、どちらかというとWebサーバやバックエンド技術のウェイトが大きいと思いますのでこっちの点から調べてみると良いと思います。

id:onigirin

どうもありがとうございます。

確かにfc2方式だと、1人が膨大なアクセスをたたき出すと負荷分散にならないですね・・・。

ロードバランスについてはお金がかかりそうであまり知ろうとしていませんでしたが、

wikipediaでの実例はとても参考になりました。

これなら、お金をかけずに分散できそうですね。

2007/07/03 15:15:04
id:unsteady No.3

回答回数10ベストアンサー獲得回数1

ポイント26pt

負荷分散で使われている方法として、ロードバランサーやラウンドロビンというものがあります。

ロードバランサーはアクセスを専用の装置によって複数用意された各サーバーに振り分けます。

http://www.atmarkit.co.jp/fnetwork/rensai/lb01/lb01.html

ラウンドロビンはDNSラウンドロビンと呼ばれるものが有名で、

同一のデータが記録された複数のサーバーを用意し、すべてのサーバーに同じドメインを割り当てます。

 

SeasaaのとあるブログのドメインのIPを調べてみたところ、

59.106.28.145, 59.106.28.139, 59.106.28.132, 59.106.28.144

.106.28.131, 59.106.28.143, 59.106.28.138, 59.106.28.146

の8つのIPアドレスが割り当てられていましたので、

推測ですが、SeasaaブログはDNSラウンドロビンではないかと思われます。

id:onigirin

どうもありがとうございます。

ロードバランサは飛び上がるほど高いですねぇ・・・。

seesaa、8つもIPがあるとは・・・。

seesaaは静的にhtmlを再構築で吐き出すので、

その都度8つのサーバに反映させることで

ラウンドロビンを実現している、ということですね。

seesaaの規模でもDNSラウンドロビンでなんとかしてるとは驚きです。

静的なコンテンツなら、即座に全サーバに反映する仕組みができれば、DNSラウンドロビンでがんばれますね。

勉強になりました。

2007/07/03 15:24:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません