メメメモモ

プログラミング、筋トレ、ゲーム、etc

MogileFS設定メモ

mogileユーザーを作成しログインして作業開始します。

必要なモジュールをインストール

cpanm YAML
cpanm Sys::Syscall
cpanm IO::AIO
cpanm Net::Netmask
cpanm Perlbal
cpanm MogileFS::Client
cpanm Gearman::Server
cpanm Gearman::Client
cpanm Gearman::Client::Async

MogileFSとMogileFS::Serverをインストール

subversionでMogileFSをダウンロードする。

mkdir -p ~/src/mogilefs
cd ~/src/mogilefs
svn co http://code.sixapart.com/svn/mogilefs/trunk/


MogileFSの主要コンポーネントをインストール

cd trunk/server
perl Makefile.PL
make
make install


subversionでダウンロードしたファイルの中にあるMogileFS::Serverをインストールすると、サーバ起動時に下記のようなエラーが出てしまいます。

Can't locate MogileFS/RebalancePolicy/DrainDevices.pm in @INC


ですので、CPANから別途ダウンロードしてインストールします。

wget http://search.cpan.org/CPAN/authors/id/D/DO/DORMANDO/MogileFS-Server-2.43.tar.gz
tar xvzf MogileFS-Server-2.43.tar.gz
cd MogileFS-Server-2.43
perl Makefile.PL
make
make install


MogileFSの管理ツールをインストール

cd trunk/utils
perl Makefile.PL
make
make install

データベースのセットアップ

mogdbsetupコマンドで設定します。今回MySQLのソケットが/tmpになかったのでオプションで指定するようにしました。ただ、ソケットのオプションがなかったので、dbportオプションを介して指定しました。

mogdbsetup --dbport=3306\;mysql_socket=/data/mysql/mysql.sock

設定ファイルを作成して起動

trackerの設定ファイルは「trunk/server/conf/mogilefsd.conf」にあります。
storage nodeの設定ファイルは「trunk/server/conf/mogstored.conf」にあります。


trackerの設定(mogilefsd.conf)

daemonize = 1
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1
db_user = mogile
db_pass = mogpass
conf_port = 7001
listener_jobs = 10


storage nodeの設定(mogstored.conf)

httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = ~/var/mogdata


それぞれコマンドで設定を読み込ませて起動します。

mogilefsd -c mogilefsd.conf
sudo mogstored -c mogstored.conf -d


下記のコマンドで動作確認します。

mogadm check

ノードサーバを追加

mogadmコマンドで作業していきます。

mogadm host add localhost --port=7500


deviceの登録と作成と認識

mkdir -p ~/var/mogdata/dev1
mkdir -p ~/var/mogdata/dev2

mogadm device add localhost 1
mogadm device add localhost 2

mogadm host mark localhost alive

ドメインとクラスを設定

mogadm domain add hogehoge
mogadm class add hogehoge normal --mindevcount=2
mogadm domain list

ドメインはclientで接続するときに使用します。


以上で設定終わり。下記のページを主に参考にしています。
MogileFS のインストールと初期設定 : Tech Talk Blog - Six Apart

クライアント

#!/usr/bin/env perl
use strict;
use warnings;

use MogileFS::Client;


## インスタンス作成
my $mogfs = MogileFS::Client->new(
   domain => 'hogehoge',
   hosts    => [ '127.0.0.1:7001' ],
);
die "Unable to initialize MogileFS object." unless $mogfs;


## key「hello」のファイルを作成
my $key = "hello";
my $fh = $mogfs->new_file($key, "normal") or die $mogfs->errstr;
$fh->print("Hello, MogileFS!!") or die $mogfs->errstr;
$fh->close or die $mogfs->errstr;


## key「hello」ファイルの読み込み
my $data = $mogfs->get_file_data($key);
die $mogfs->errstr unless $data;
print $$data . "\n";


## key「hello」ファイルのURLを取得
my @paths = $mogfs->get_paths($key);


## key「hello」ファイルの削除
$mogfs->delete($key);