090214ldd Mogilefs
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

090214ldd Mogilefs

on

  • 7,453 views

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

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

Statistics

Views

Total Views
7,453
Views on SlideShare
7,325
Embed Views
128

Actions

Likes
3
Downloads
34
Comments
0

6 Embeds 128

http://d.hatena.ne.jp 95
http://www.makies.com 20
http://www.slideshare.net 7
http://inucara.g.hatena.ne.jp 4
http://webcache.googleusercontent.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

090214ldd Mogilefs Presentation Transcript

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