サーバに関する初心者です。


はてなのサーバって300台くらいあるとどこかの記事で読んだんですけど、それらをどうやって連携して稼動するようにしているんですか?

たとえば100人が同時にはてなのトップページ「http://www.hatena.ne.jp/」を表示しようとしますよね。最初の50人にはAというサーバで表示させ、残りの50人にはBというサーバで表示させているのでしょうか。その振り分けはどうやっているのでしょうか。

ちょっとちんぷんかんぷんな質問かもしれませんが、解説できる方お願いいたします。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2006/11/29 16:35:20
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント20pt

ちょっと情報古いけどこんな感じだと思う。

http://d.hatena.ne.jp/naoya/20051205/1133782641

簡単に言えばWebサーバーの前にロードバランサーを置いている。

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

ロードバランサーは専用の機械の事が多いけど、はてなの場合は Apache 等のソフトウェアでやっている。


ちなみにDBの方はこんな感じらしい。

http://d.hatena.ne.jp/naoya/20060901/1157109663

こちらも基本的な構造は一緒だけど、MySQL のデータはレプリケーションしてあるので、どのDBに接続しても同じ結果が返ってくるようにしてある。

id:sawakimasahito

ありがとうございます!

2006/11/29 16:29:59

その他の回答6件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント20pt

ちょっと情報古いけどこんな感じだと思う。

http://d.hatena.ne.jp/naoya/20051205/1133782641

簡単に言えばWebサーバーの前にロードバランサーを置いている。

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

ロードバランサーは専用の機械の事が多いけど、はてなの場合は Apache 等のソフトウェアでやっている。


ちなみにDBの方はこんな感じらしい。

http://d.hatena.ne.jp/naoya/20060901/1157109663

こちらも基本的な構造は一緒だけど、MySQL のデータはレプリケーションしてあるので、どのDBに接続しても同じ結果が返ってくるようにしてある。

id:sawakimasahito

ありがとうございます!

2006/11/29 16:29:59
id:ootatmt No.2

回答回数1307ベストアンサー獲得回数65

ポイント20pt

ロードバランサを使用しているのだと思います。

http://www.keyman.or.jp/3w/prd/95/30001595/?vos=nkeyadww10001881

id:sawakimasahito

ありがとうございます!

2006/11/29 16:31:28
id:hamster009 No.3

回答回数3431ベストアンサー獲得回数50

並列計算機 http://end

id:sawakimasahito

0ポイント。

2006/11/29 16:32:01
id:tadashi0805 No.4

回答回数287ベストアンサー獲得回数29

ポイント20pt

はてなのサーバがそうなのかはわかりませんが、ロードバランサというのを使えば可能で、一つの実装方法です。

例えば、http://www.hatena.ne.jp/へのアクセスの場合、www.hatena.ne.jp(グローバルIPアドレスが何らかの値になる)にポート番号80でリクエストが飛んできます。

これを、一旦ロードバランサが受け、ロードバランサは例えばWebサーバが2台あるとすると、wwwA.hatena.ne.jpのポート80とwwwB.hatena.ne.jpのポート80のリクエストに変換して、AとBに対して順繰りに振り分けるように制御します。

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

単純に順繰りにするだけでなく、10台のサーバがあったとして、どれが1台がダウンしたらそれを検出して、自動的に10台の順繰り→9台の順繰りにするなどの制御もできます。

id:sawakimasahito

ありがとうございます!

2006/11/29 16:32:33
id:backupper No.5

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

ポイント20pt

振り分け用のフロントサーバでアクセスを受け付け、バランサーという振り分けソフトを使って、沢山のサーバにできるだけ均等にリクエストを渡すようにします。

はてなが今現在どのようにしているか、確かな事は外部の人間には分かりませんが、以前はmod_proxy_balancer使ってたけど、今バランサーにLVSを使っているような話を聞いた事があります。

サービス毎に構成は多少違うでしょうから、全部が全部ではないでしょうし、組み合わせなどで色々工夫していると思います。

http://d.hatena.ne.jp/naoya/20051205/1133782641

id:sawakimasahito

ありがとうございます!

2006/11/29 16:32:56
id:am0200 No.6

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

ポイント20pt

はてなの実装は分かりませんがWebサーバーの負荷分散はDNSを使ったものや専用の負荷分散装置(ロードバランサ)等色々な方式があります。

http://ja.wikipedia.org/wiki/DNS%E3%83%A9%E3%82%A6%E3%83%B3%E3%8...

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

id:sawakimasahito

ありがとうございます!

2006/11/29 16:33:18
id:godhoruseye No.7

回答回数23ベストアンサー獲得回数2

ポイント20pt

負荷分散手法として

ロードバランサー(Load Balancer)

を使っているはずです。

簡単な説明をすると

クライアントからのリクエストを、ユーザー数やデータの転送量などを考慮して各サーバーに効率的に割り振る(ハードやソフトでの)仕組み。

他の方法として

DNSラウンドロビン(DNS round robin)

を利用している可能性もあります。


クラスタリング(clustering)もキーワードとなるでしょう。

http://q.hatena.ne.jp/

id:sawakimasahito

ありがとうございます!

2006/11/29 16:33:38
  • id:vencqr109
    サーバーといってもフロントでアクセスを直でうける、
    「WEBサーバー」だけではありません。

    DBの処理をする「DBサーバー」や、まとめてファイルを書き換えたりする「Batchサーバー」などがあります。

    またその中で、1台のサーバーが落ちたとしてもサービスに
    影響を与えないように通常はサーバーを冗長化しています。
    http://e-words.jp/w/E58697E995B7E58C96.html

    あくまでWEBサーバーの場合ですが、以下の様なイメージで
    それぞれのアクセスをLoadBalabcerが振り分けています。

    +------------+ -> Server A
    Access ->>> |LoadBalabcer| -> Server B
    +------------+ -> Server C

    こちらはあくまでサーバーが3台の構成で記載していますが、
    大規模になればもっと増えていくでしょう。

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

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

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

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