Project Home Downloads Wiki Issues Source
AppExample  
アプリケーションの例
Updated Jan 9, 2012 by dorma...@rydia.net

簡単なアプリケーションの例

もしMogileFS::Serverのtarballの2.46以降を持ってきたら、2,3のファイルが入ったexample/testapp/ ディレクトリを見つけるでしょう。これを使って付加機能の無いアプリケーションがどうやってMogileFSからファイルを提供するかを見ることができるでしょう。

http://search.cpan.org/dist/MogileFS-Server/

概要のリマインダ

始める前に、MogileFSからアプリケーションがどうやってファイルを提供するかのフローのちょっと再確認をします:

  • ブラウザが "GET /foo" リクエストをperlbal ロードバランサに発行します
  • Perlbal がリクエストをアプリケーションサーバ(perl, php, ruby など)に発送します
  • アプリケーションはMogileFS トラッカーにファイル(あるいはcache/など)がどこにあるかを尋ねます。
  • アプリケーションは マジックヘッダ 'X-REPROXY-URL: http://path/from/mogilefs/tracker' を返します。
  • Perlbal はそのヘッダを途中で捕まえ、実際のファイルとともに元のブラウザに応答します。

なぜこのようなやりかたをするかについてちょっと再確認をすると、スケーラビリティ、エフィシエンシー、フレキシビリティのためです。アプリケーションサーバはファイルを読み込む必要がなく、それを返します。アプリケーションサーバはパスを見つける必要があり、それから他のリクエストの注文を聞きます。

Perlbal はクライアントにデータを返す間甘い時間を過ごします。Perlbalはリクエストを記憶してアプリケーションとのやり取りなしにファイルを応答することもできます。他のいろいろな理由から、今は詳しく説明しません :)

これが全く分からない倍は、以下を読んで実際にそれがどう達成されるかを見てください。

必要条件

アプリケーションの例で必要なものは動作しているMogileFSクラスターです。それはInstallHowToに従って取得できています。CommandlineUsageにも熟知していなければなりません。そうすれば、MogileFSで簡単にファイルをアップロードとテストをすることができます。

最後に、アプリケーションを実際に動かすためにPlackをインストールする必要があります。MogileFS::Severとその仲間を持ってきたのと同じ方法でそれをインストールします。

cpanm Plackはこれをするのにとても簡単な方法です。

perlbalを開始するのにPerlbal::XS::HTTPHeadersもインストール必要があるかも知れません。これができない場合は単純にtestapp-perlbal.confからXS enable headersの行をコメントアウトします。


Perbal の開始

まず、testapp-perlbal.confファイルを見直します。無視していいものもいくつかありますが、キーになるものもいくつかあります:

CREATE POOL testapp_pool
  POOL testapp_pool ADD 127.0.0.1:5000

アプリケーションがある場所です。もし大きなサイトであれば多くのPOOL行があるでしょう。それぞれのwebサーバごとに一行あります。

  SET role = reverse_proxy
  SET pool = testapp_pool 
  SET listen = 0.0.0.0:7070
  SET enable_reproxy = on

These lines are the meat, defining that perlbal will listen on port 7070, and that reproxies (what mogilefs relies on) should be allowed.

perlbalをこの設定で開始するには:

$ perlbal -c examples/testapp/testapp-perlbal.conf

(テストの単純化のために、今のところそれらをフォアグラウンドで実行するようにしなければなりません。必要があれば、数個のターミナルセッションを使ってください。)


アプリケーションの開始

test アプリケーションはとても単純です。プレインテキストのみを話し、プレインテキストとしてのみファイルを提供します。

最初に、testapp.psgiを開き、上のほうの二行を編集します。

my $TRACKERS = ['tracker1:7001'];
my $DOMAIN   = 'toast';

これらを実際のトラッカーのホスト名/ポート番号 と置き換え、実際のテストドメインと置き換えます。

Plackをすでにインストールしていて、ポート番号5000ではそれ以外なにも実行していないと仮定します。最初はシンプルであるべきです:

$ plackup examples/testapp/testapp.psgi
HTTP::Server::PSGI: Accepting connections at http://0:5000/

ファイルのアップロード

コマンドラインの使い方 goes into great depth on this. 単純化のために:

$ echo "hello I am a test file" | mogupload --key="/hellotest" --file="-"

ファイルの取り出し

http://127.0.0.1:5000/hellotestを呼び出すと - 謎めいた空白を受け取るでしょう。If your application is designed better than this test app, it shouldn't even be possible to get a response unless first going through perlbal.

これで、ブラウザの中で`http://127.0.0.1:7070/hellotest' が活性化します。test ホストがローカルでは無い場合は、必要に応じて 127.0.0.1 を置き換えます。

全てがうまくいったならば、"Hello I am a test file" と挨拶をするのがよいでしょう!


アプリケーションの理解

全てがうまく動作したので、testapp.psgiのソースを読む時間をとって、perlbal設定を少し理解してみましょう。Perlbal 1.77 以降は、完全なマニュアルが含まれて居ます(見るためには、`perlbal Perlbal::Manual`)。

testapp.psgi ファイルは、各ステップを説明するために密に注釈されています。本体のみにするために解体します。実際のアプリケーションでは完全なフレームワークを使う必要があり、特にraw Plackに頼るのは避けるようにしましょう :)

何か問題があるか質問がある場合は、気軽にメーリングリストあるいはfreenodeのIRCの#mogilefs で聞いてください。


Sign in to add a comment
Powered by Google Project Hosting
TOP
inserted by FC2 system