• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルサーバーとウェブサーバーを分ける)

ファイルサーバーとウェブサーバーを分ける方法と画像格納先の指定方法について

このQ&Aのポイント
  • ファイルサーバーとウェブサーバーを分ける方法とは何かを教えてください。
  • 画像ファイルを取り扱うファイルサーバーの格納先を指定する方法について教えてください。
  • ファイルサーバーを複数台数にした場合、画像がどのサーバーに保存されるかをDBに記録してウェブサーバーで動的に指定する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ドメインの構成例としては example.com が www.example.com と contents.example.com に分かれているとします。 WEB サーバとコンテンツサーバはそれぞれ2台ずつあるとし、以下のように呼びます。 WEB サーバA, B コンテンツサーバA, B クライアントがアクセスするときには、ドメイン名をDNSに問い合わせするのでこのときに返すIPアドレスをWEBサーバA とコンテンツサーバAのセット、WEBサーバB とコンテンツサーバBセットで返します。このようにすると、負荷分散が実現できます。静的コンテンツならこれが簡単にできる方法だと思います。 また、プロバイダが提供する映像配信では、各プロバイダにコンテンツサーバ(ミラーサーバ)を持たせることで、ネットワーク負荷を大きく下げられることが想像できると思います。一方、ニコニコ動画のようなサービスはネットワーク負荷が高くなることも想像できると思います。 クライアント-ISP内のミラーサーバ クライアント-ISP-ISP-ニコニコのサーバ ようするに、ドメイン名に対してサーバは複数指定することができます。 >思いついた方法としては(略) ファイルを分散して格納する場合には当然コストがかかりますので、ファイルサーバとそのミラーサーバを用意する構成のほうが単純なのでいいと思いますが、これは格納しているファイルへのアクセスに偏りがあると無駄なディスクスペースを消費しがちになるという欠点があります。 たとえのSNS系では(イラストに限らず、写真、音楽、映像なども含めて)、常識的に考えて最新のコンテンツへのアクセスが多く、過去のコンテンツへのアクセスは少ないと考えられるので、ファイルを年、年月または年週単位にフォルダ分けして格納します。 ミラーのファイルサーバは比較的新しいコンテンツのみを持ち、アクセス頻度の低いコンテンツはシンボリックリンクなどで本ファイルサーバへ繋げるなんてどうでしょう? あるいはアクセスログなどの統計情報をもとにミラーサーバの持つコンテンツとリンクを自動で分けるようにするなど。(LRUを応用したようなかんじですかね。ここまでやると本格的ですので割と大変ですので、大容量ディスク(またはRAID)買った方が安上がりですかね。) ミラーサーバ多数-シンボリックリンク→本ファイルサーバー 上記の構成では、DNSのラウンドロビンとシンボリックリンクによって透過的なアクセスが実現できます。 >(略)画像ファイルを取り扱うファイルサーバーを別途用意する場合、一般的にはどのような方法で画像格納先を指定するのでしょうか。 さて、結論は 画像へのURLはそのままに、多数のサーバに処理を振り分ける です。 まあ、ネットワークのお勉強をするとNAT、IPマスカレード、プロキシサーバ、リバースプロキシサーバなどなど割と透過的にアクセスできる技法が何となく分かりますよ。

psalm221
質問者

お礼

実用的なアドバイスありがとうございます! DNSラウンドロビンくらいなら分かるのですが、シンボリックリンクやネットワーク関連の知識が薄いので、そのあたりを勉強してみることにします。 だいぶ道筋がみえてきました。ありがとうございます。m(_ _)m

その他の回答 (2)

回答No.3

Webサーバーから見ると、No1,2 さんのようなやり方がでてくるのでしょう。 ただ、ファイル管理ソフトとしては、通常、DBには、コンテツIDで(ユニークな暗号化された乱数)登録され、実態は別ファイルシステムに存在します。もちろんDBに内包(バイナリとして)するやり方もあるが、DBとして管理が大変になるので、通常、OSのファイルシステムを使用します。 その見せ方をLDAPを使用するか、ファイルシステムとして扱うかは設計思想による。 クライアントツールからの呼び出しには、Webアプリから見ると、CGI(サーバーサイドスクリプト)の戻り値としてバイナリーでかえされるだけなので、クライアントからも正式なファイル名(ファイルシステムに格納されているファイル名)は、実態として分かりません。業務Webアプリなんかは、通信経路でもSSL、SSL-VPNを使用し見えませんが、呼び出し元でも、どこに、何が格納されているか見えないようになっています。 そう、サブドメインとして見えているのは、単なるWebサーバーのレプリカで、ファイルの実態格納場所でないことに注意。 そうなってくると、 >ファイルサーバーを複数台数にしたい場合はどうするんだろう・ なんて考える事自体無駄。PKIの公開鍵と同じで、CGIが吐き出すものは単なるキーにすぎなく、CGIが動作するマシンからアクセスできる状態であれば、どうにでもなる。 なんてね。不特定多数に対しては、当然ロードバランサーを含め、いくつも、アクセスポイントを持っているのが当たり前。それぞれ、実態ファイルサーバーのレプリカをもつか、同じURIを使うかは、設計次第ですね。というか、かね次第(予算)。 Oracleには、質問者が考えたような事を提供しているシステムがありますので、参考にしてください。 http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=Oracle+RCA http://www.atmarkit.co.jp/fdb/rensai/basics_rdb/07/basicrdb07_01.html OracleのサーバーをWEBサーバー コンテンツサーバーと見立てれれば、発想しやすいでしょう。

psalm221
質問者

お礼

なるほど・・・。こういった製品もあるんですね。 ぱっと見ですべて理解できなかったので、これから研究してみることにします! ありがとうございましたm(_ _)m

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

一般的にはDBを利用して目次の管理と格納先の管理をします。呼び込むときはDBから格納先を読み取ってそのフォルダーから読み込むようにします。 その他にDBに直接画像を取り込んでしまう場合もあります。そうすることで画像に対して検索が出来るからです。でもこの方法はDBの性能で左右されますから今はあまり使われないと思います。 今の一般的な方法は、XMLを利用してタグを作成し、そこにリンク先を記述する方法です。このXMLをうまく処理すればタグ検索によってあらゆる検索も可能です。 このXML自体をDB化する手もあります。画像データーベースとはこのようなXMLによる階層管理されている物が多いです。 簡単なものではXML定義だけでDBを使わず処理をすることもできます。

psalm221
質問者

お礼

なるほど・・。 DBに格納先を指定しておくというのは、簡単に実現できる方法のひとつのようですね。 ありがとうございました。m(_ _)m

関連するQ&A