LOCAL DEVELOPER DAY '09/Winter




              OSS分散ファイルシステム
           MogileFS で組む素敵システム


                       Kazu...
About me




               Kazuhisa Hara
                Id:kazuhisya

           moonlinx の中の人してます

             今日は横浜から...
お話を始める前に…




   moonlinxって何だよ…




                    3
What is moonlinx ?


moonlinxとは…
デザイン×音楽=新しいクリエイティション
• オンラインカルチャーマガジン & webコミュニティ
   – クリエーター、ミュージシャン向けプロモーションサイト
• ウラでは実...
Agenda



  Agenda

  • Strong Man Under The Revolving Stage
  • DANGA INTERACTIVE
     •What is MogileFS ?
         •Over...
Strong Man Under The Revolving Stage




moonlinxを裏から支えるOSS
           - 分散ファイルシステム編 -




                               ...
Danga Interactive




     DANGA INTERACTIVE



                         7
Brad Fitzpatrick



  moonlinxを裏から支えるOSS           - 分散ファイルシステム編 -


• MogileFS
• Perlbal
• memcached

作者:Brad Fitzpatrick...
Why Danga ?




          Why DANGA ?


                        9
Once upon a time…(?)




                       Story


                               10
Management of media file




 moonlinxはユーザーがイメージ・音楽・動画などの
           複数のメディアファイルを
                 バンバン(←ここ重要)
         アッ...
Selfishness…


ファイルのバック              NFSとかさ、マウ
アップとか楽した              ントとかしたくな
  いんだけど                 いんだよね




 ディスクの追加は
...
The demand is answered




              それ、MogileFSで
             解決できるんじゃね?




                             13
What is MogileFS ?




 What is MogileFS ?
        danga.com謹製OSS分散ファイルシステム

                     特殊カーネル不要
               ...
Introduction results




                 導入実績は?


    LiveJournal (SixApart運営,アメリカの大手ブログサイト。イメージファイル格納に利用)
    Digg (ソーシャ...
It might be good!




         結構いいんじゃない?
        …で、どんなシステムなの?




                        16
Architecture



    MogileFS Components


    • trackers (mogilefsd)
    • storage nodes (mogstored)
    • mysql database ...
Architecture




MogileFS Components
•    trackers (mogilefsd)

      – クライアントからリクエストを受け取ったり、DBで状態を管理

      – MogileFSの肝、...
Architecture




    MogileFS Components
•   mysql database cluster
     – StorageNodeの管理
     – NDB Cluster推奨、と言うことに事になって...
MinimumOverview - Upload

mindevcount : 2の場合
                                         Webページ
※ 作成するコピーの数
                 ...
MinimumOverview - Download




                                            ①   Key : hogehoge


                          ...
The demand is answered




                  よーするに




                          22
Upload


                                        mogilefsd
                        MogileFS       (trackers)
             ...
Download


                                 mogilefsd
                  MogileFS       (trackers)
                        ...
Cloud Computing!




         Amazon S3 のような、
          クラウド感溢れる(?)
          システムができた!




                           25
Moreover, do?




                で、
スケーラビリティとバックアップを両立し
 た、素敵システムが組みあがったのもつ
        かの間…。


                      26
Selfishness


でも、trackersは           ファイルの扱いは
毎回DBに問い合わ              フロントで受け持
 せすんでしょ?               たなきゃいけない
            ...
The demand is answered




       それ、Perlbalで解決出来るよ!




                            28
What is Perlbal ?




What is Perlbal ?
   Sexy reverse proxy load balancer and
         webserver, full of tricks.

     ...
Perlbal



フロント(今回はRails)の前に、
 Perlbal(リバースプロキシモード)を置いて
     メディアファイルのやり取りをやらせると…



Railsより遥かにコストが掛からない!

             しか...
X-REPROXY-CACHE-FOR
                                                     DB
                                              ...
Overview - Download




                                             Perlbalにキャッシュがあれば
                            Perlbal...
It adopts it!




            つまりMogileFSは
          ファイルのStoreのみに専
            念できるわけだ。

                これ採用!




      ...
Necessary to think
素敵システムなんだけど、考えなきゃいけないところ
•    ファイルサイズ
      – 1ファイルに付き、100MBまでしかStoreできない仕様になってる
         • (クライアント側で)b...
memcached



キャッシュの話が出たところで、ついでに蛇足


            memcached
みんな大好き、爆速メモリキャッシュサーバー
ネイティブでmogilefsdがサポートしてるよ!
            オブジ...
Conclusion




             まとめ


                   36
Conclusion


mogileFS(とPerlbal)を使うと…
• RAID, SAN, NFS を一切使わないで
• スケーラビリティとバックアップが一度に両立できて
• クラウド感溢れるサービスが構築できる!
• しかも、安く!!...
How to Install

参考::MogileFSインストール方法
• yumやらzypper経由
  – 一番カンタンで開発環境(gccとか)のインストールもほぼ不要
      • ただし、そもそもなかったり、バージョン古かったりする...
Thanks




         ご清聴ありがとう
          御座いました




          http://moonlinx.jp
                               39
MogileFS - memcached Support


    ついでの蛇足ばなし補足
     memcachedをtrackers(mogilefsd)に
                           組み込むと…
    M...
Upcoming SlideShare
Loading in...5
×

090214ldd Mogilefs

4,484

Published on

09/02/14 LOCAL DEVELOPER DAY ’09/Winterにて発表したプレゼン資料です。

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,484
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
35
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "090214ldd Mogilefs"

  1. 1. LOCAL DEVELOPER DAY '09/Winter OSS分散ファイルシステム MogileFS で組む素敵システム Kazuhisa Hara moonlinx.jp 1
  2. 2. About me Kazuhisa Hara Id:kazuhisya moonlinx の中の人してます 今日は横浜から参戦 2
  3. 3. お話を始める前に… moonlinxって何だよ… 3
  4. 4. What is moonlinx ? moonlinxとは… デザイン×音楽=新しいクリエイティション • オンラインカルチャーマガジン & webコミュニティ – クリエーター、ミュージシャン向けプロモーションサイト • ウラでは実験的なことも結構やってるよ! Community Web Magazine (Rails) (MT) 4
  5. 5. Agenda Agenda • Strong Man Under The Revolving Stage • DANGA INTERACTIVE •What is MogileFS ? •Overview •What is Perlbal ? •Overview • Conclusion 5
  6. 6. Strong Man Under The Revolving Stage moonlinxを裏から支えるOSS - 分散ファイルシステム編 - 6
  7. 7. Danga Interactive DANGA INTERACTIVE 7
  8. 8. Brad Fitzpatrick moonlinxを裏から支えるOSS - 分散ファイルシステム編 - • MogileFS • Perlbal • memcached 作者:Brad Fitzpatrick 氏 成果物はLiveJournal , Vox(SixApart)で使われている Perl(CPAN)界隈の超有名人!らしい 最近はGoogleに居る…? そんな彼の(旧)会社が『DANGA INTERACTIVE』 http://www.danga.com 8
  9. 9. Why Danga ? Why DANGA ? 9
  10. 10. Once upon a time…(?) Story 10
  11. 11. Management of media file moonlinxはユーザーがイメージ・音楽・動画などの 複数のメディアファイルを バンバン(←ここ重要) アップロードすることが出来るサイト… ディスク容量や管理が馬鹿にならない 11
  12. 12. Selfishness… ファイルのバック NFSとかさ、マウ アップとか楽した ントとかしたくな いんだけど いんだよね ディスクの追加は 勿論SANとか買う金 超絶簡単に、かつサー など何処にもない ビス止めずにしたい 不満たらたら。 12
  13. 13. The demand is answered それ、MogileFSで 解決できるんじゃね? 13
  14. 14. What is MogileFS ? What is MogileFS ? danga.com謹製OSS分散ファイルシステム 特殊カーネル不要 自動レプリケーション Amazon S3やGFS RAID, SAN, NFS 一切不要 ライクなシステム ファイルシステム依存なし 簡単ディスク追加 自動フェイルオーバー 14
  15. 15. Introduction results 導入実績は? LiveJournal (SixApart運営,アメリカの大手ブログサイト。イメージファイル格納に利用) Digg (ソーシャルニュースサイト。イメージファイル格納に利用) Veho (ビデオ配信。Hadoop上で使ってるらしい。クライアントはJava) Ebaums World (Entertainment website?? メディアファイルを格納) Gaia Online (英語圏での最大の電子掲示板らしい。アバターイメージを格納) JogNote (運動を楽しく続けるための和製SNS。イメージファイルの格納) 15
  16. 16. It might be good! 結構いいんじゃない? …で、どんなシステムなの? 16
  17. 17. Architecture MogileFS Components • trackers (mogilefsd) • storage nodes (mogstored) • mysql database cluster(or PostgreSQL) • clients (perl MogileFS::Client, Ruby gem mogilefs-client…) 17
  18. 18. Architecture MogileFS Components • trackers (mogilefsd) – クライアントからリクエストを受け取ったり、DBで状態を管理 – MogileFSの肝、管理マネージャー – 冗長化もわりと簡単にできる • storage nodes (mogstored) – イメージ的にはWebDAVみたいなもの • と、言うかApache(lighttpd)-WebDAVでも動作するらしい – 実はPerlbal *perlbalについては後記 18
  19. 19. Architecture MogileFS Components • mysql database cluster – StorageNodeの管理 – NDB Cluster推奨、と言うことに事になっている • 使わなくても動くけど、冗長を意識したいならcluster組むべき – PostgreSQLでもOKらしい • clients (perl MogileFS::Client, Ruby gem mogilefs-client…) – クライアントインターフェース – 公式にはPerlのみサポート • でもRubyやPHP、Python、Java版もある 19
  20. 20. MinimumOverview - Upload mindevcount : 2の場合 Webページ ※ 作成するコピーの数 アップローダー File Key : hogehoge アプリケーションの Mogileインターフェイスが Front Web server このキーでStore Storageのステータス管理 mog DB mogilefsd MogileFS (MySQL) (trackers) DB Storage nodeの、 http mogstored どこかにファイルが 複製される AUTO Replication File Mogile Storage node File 20
  21. 21. MinimumOverview - Download ① Key : hogehoge アプリケーションが keyをtrackersに問い 合わせる Front Web server hogehogeどこ? ➁ ➂ アプリケーションは MogileFS trackers(mogilefsd)は 受け取ったファイル key よりファイルのありかを DB パスで実ファイルを DBから引っ張り 取りに行く、その後 アプリケーションに伝える クライアントへ AUTO Replication File File Mogile Storage node 21
  22. 22. The demand is answered よーするに 22
  23. 23. Upload mogilefsd MogileFS (trackers) を に Media File と言うKeyを付与して投げると Key : hogehoge mogstored Storage node の、どこかに mindevcount : 2 分コピーされる ※ 作成するコピーの数 「どこかに」じゃなくて、明示的に指定もできるよ! 23
  24. 24. Download mogilefsd MogileFS (trackers) に と言うKeyを問い合わせると Key : hogehoge mogstored Storage node が の、どこかにあるかを Media 教えてくれる File http://192.168.xxx.yyy:7500/dev1/xxxyyyzzz.fid こんな感じの値 24
  25. 25. Cloud Computing! Amazon S3 のような、 クラウド感溢れる(?) システムができた! 25
  26. 26. Moreover, do? で、 スケーラビリティとバックアップを両立し た、素敵システムが組みあがったのもつ かの間…。 26
  27. 27. Selfishness でも、trackersは ファイルの扱いは 毎回DBに問い合わ フロントで受け持 せすんでしょ? たなきゃいけない わけ? 1画面出すのに何 回SELECT文 走らせるんだよ まだ不満。 27
  28. 28. The demand is answered それ、Perlbalで解決出来るよ! 28
  29. 29. What is Perlbal ? What is Perlbal ? Sexy reverse proxy load balancer and webserver, full of tricks. Webサーバー ロードバランサー リバースプロキシ プロキシキャッシュサーバー MogileFSと相性最高! 29
  30. 30. Perlbal フロント(今回はRails)の前に、 Perlbal(リバースプロキシモード)を置いて メディアファイルのやり取りをやらせると… Railsより遥かにコストが掛からない! しかも、 将来の拡張に柔軟対応ロードバランシングも実現できる 30
  31. 31. X-REPROXY-CACHE-FOR DB 負 荷 で、しかも 対 策 DBリクエストは、Perlbalの X-REPROXY-CACHE-FORでファイルパスをキャッシュ mogileFSからPerlbalが受け取る値 http://192.168.xxx.yyy:7500/dev1/xxxyyyzzz.fid ReverseProxyとしてPerlbalが吐き出す値 http://media.moonlinx.jp/media/system/hoge/xxxyyyzzz.fid Perlbalでproxyしたこの値をキャッシュすると… 毎回trackers(mogilefsd)に問い合わせが不要 つまりDBへのアクセスがいらない! 31
  32. 32. Overview - Download Perlbalにキャッシュがあれば Perlbal 、即ファイルパスを返す Main Web Server ファイルの処 理は、Perlbal trackersへの問い合わせ、 が受け持つ つまりDBアクセスなし MogileFS DB File AUTO Replication Mogile Storage node 32
  33. 33. It adopts it! つまりMogileFSは ファイルのStoreのみに専 念できるわけだ。 これ採用! 33
  34. 34. Necessary to think 素敵システムなんだけど、考えなきゃいけないところ • ファイルサイズ – 1ファイルに付き、100MBまでしかStoreできない仕様になってる • (クライアント側で)bigfileオプションをつければ分割して保存してくれる – ただしクライアント依存… – Rubyのクライアントは年末辺りに対応したっぽい。JavaもOK?PHPはまだっぽい • 拡張子 – 拡張子は全て「.fid」で保存される • 取り出す時にフロントで隠蔽するなり、加工が必要 • もしくはプラグイン作って、それもDBに突っ込んじゃうとか…! • 管理とかテストとか、まだまだ色々 – 管理用のツールが少ない • CUIのがあるけど、もっと簡単にしたい – MogileFSのデータ消したときのPerlbalのキャッシュとか。 34
  35. 35. memcached キャッシュの話が出たところで、ついでに蛇足 memcached みんな大好き、爆速メモリキャッシュサーバー ネイティブでmogilefsdがサポートしてるよ! オブジェクトをメモリにキャッシュ 導入ラクチン 分散もできる mixi, はてな, Facebook, Vox, LiveJournal, ニコ動…みんな大好き 35
  36. 36. Conclusion まとめ 36
  37. 37. Conclusion mogileFS(とPerlbal)を使うと… • RAID, SAN, NFS を一切使わないで • スケーラビリティとバックアップが一度に両立できて • クラウド感溢れるサービスが構築できる! • しかも、安く!!(全部OSS,SAS・FibreChannel もいらないよ!) みんなハッピー 37
  38. 38. How to Install 参考::MogileFSインストール方法 • yumやらzypper経由 – 一番カンタンで開発環境(gccとか)のインストールもほぼ不要 • ただし、そもそもなかったり、バージョン古かったりする • CPAN経由 – CPAN重い! ><; • でも依存関係の解消とかちょっとラク – miniCPANでミラーリングしとくと、大量にインスコする時楽かも • Sourceから自力make – 依存moduleが結構多くて大変 • Danga-SocketとかGearman-ServerとかIO-AIOとか – CPANと併用するといい感じ • 依存関係 → CPANで解消 / 新しいバージョンの本体 → SVNで引いてくる 38
  39. 39. Thanks ご清聴ありがとう 御座いました http://moonlinx.jp 39
  40. 40. MogileFS - memcached Support ついでの蛇足ばなし補足 memcachedをtrackers(mogilefsd)に 組み込むと… MogileFSのキーやファイルの場所をキャッシュ • trackersに問い合わせが来た時点で初めて効果を発揮する – 今回はPerlbalのキャッシュでtrackersにすら到達しないような作りだから、現時点 ではあんまり効果なし • perlbalを使わない場合は特に良いんじゃないかな • Uploadの時にキャッシュするからPerlbalのキャッシュに乗るまでは有能 – ちょっと短い… • ただしmemcachedは分散設置できるから、今後Perlbalで追いつかなくな った時の、2次キャッシュ的な対策にはなるかも – そこまで行けば嬉しい悲鳴かな? 40
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×