Más contenido relacionado La actualidad más candente (20) 090214ldd Mogilefs2. About me
Kazuhisa Hara
Id:kazuhisya
moonlinx の中の人してます
今日は横浜から参戦
2
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
8. Brad Fitzpatrick
moonlinxを裏から支えるOSS - 分散ファイルシステム編 -
• MogileFS
• Perlbal
• memcached
作者:Brad Fitzpatrick 氏
成果物はLiveJournal , Vox(SixApart)で使われている
Perl(CPAN)界隈の超有名人!らしい
最近はGoogleに居る…?
そんな彼の(旧)会社が『DANGA INTERACTIVE』
http://www.danga.com
8
11. Management of media file
moonlinxはユーザーがイメージ・音楽・動画などの
複数のメディアファイルを
バンバン(←ここ重要)
アップロードすることが出来るサイト…
ディスク容量や管理が馬鹿にならない
11
12. Selfishness…
ファイルのバック NFSとかさ、マウ
アップとか楽した ントとかしたくな
いんだけど いんだよね
ディスクの追加は
勿論SANとか買う金
超絶簡単に、かつサー
など何処にもない
ビス止めずにしたい
不満たらたら。
12
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
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
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
26. Moreover, do?
で、
スケーラビリティとバックアップを両立し
た、素敵システムが組みあがったのもつ
かの間…。
26
29. What is Perlbal ?
What is Perlbal ?
Sexy reverse proxy load balancer and
webserver, full of tricks.
Webサーバー
ロードバランサー
リバースプロキシ
プロキシキャッシュサーバー
MogileFSと相性最高!
29
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
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
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