Your SlideShare is downloading. ×
0
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
090214ldd Mogilefs
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

090214ldd Mogilefs

4,445

Published on

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

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,445
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
35
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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

×