Weed-FS - HTTPで使えるスケーラブルなファイルサーバ
Webサービスを提供していてファイルを保存するというケースは良くあります。が、サーバ一つに保存すると移行や何らかの障害が発生した時にデータの安全性を保持するのが難しくなるでしょう。 そこで単純にファイルを保存するのではなく、スケーラブルなストレージシステムが欲しくなります。個人的にはMogileFSも好きですし、Amazon S3を使う手もあると思いますが今回はWeed-FSというキーベースのファイルストレージを紹介します。
多彩なOSに対応
Weed-FSのバイナリは、
- Windows
- Plan9
- OpenBSD
- NetBSD
- Darwin
- Linux
向けに配布されています。幅広いOSで使えるようです。今回はWindows版を試しています。
マスターを立てる
最初にマスターを立てます。
> weed.exe master
マスターは9333ポートで立ち上がります。
ボリュームサーバを立ち上げ
次にボリュームサーバを立ち上げます。幾つでも立ち上げられます。
ファイルを保存&取得してみる
これで準備は完了です。ファイルの保存はPOSTでファイルを放り込むだけです。
$ curl -F file=@/home/chris/myphoto.jpg http://127.0.0.1:8080/3,01637037d6
そして取り出す時はGETで実行するだけです。
$ curl http://localhost:8080/3,01637037d6.jpg
以下のような名称でも取得できます。
- http://localhost:8080/3/01637037d6/my_preferred_name.jpg
- http://localhost:8080/3/01637037d6.jpg
- http://localhost:8080/3,01637037d6.jpg
- http://localhost:8080/3/01637037d6
- http://localhost:8080/3,01637037d6
つまり保存時に指定したキーでファイルが返ってくるという形です。とてもシンプルですね。削除はDELETEメソッドで実行すればOKです。
curl -X DELETE http://127.0.0.1:8080/3,01637037d6
レプリケーションも可能
スケーラブルなファイルストレージとあってレプリケーションにも対応しています。
$ curl http://localhost:9333/dir/assign?replication=001
このように外部から命令するだけです。
HTTPでデータをやり取りするだけなのでシンプルに使いこなせそうです。複数のサーバ上にファイルを保存しておけば、万一のサーバ障害にもファイルの安全性は保てるはずです。
Weed-FSはApache License 2.0のオープンソース・ソフトウェアです。
weed-fs - Fast Scalable distributed key-file storage system - Google Project Hosting