Note of MogileFS #04 MogileFS Serverのインストール(2) (覚書)
前回のエントリの続きです。
主に下記のリンク先を参考にインストールしています。
そして書きかけです。w
- http://mogilefs.schtuff.com/another_how_to_install_mogilefs_debian_sarge
- http://www.sixapart.jp/techtalk/2006/10/dev_mogilefs_install.html*1
databaseの作成
前回svnから取ってきた人は/trunk/serverにあるmogdbsetupを使うと簡単に出来ます。
# mogdbsetup --help Usage: mogdbsetup [opts] Options: Default Description ============ =========================================== --verbose <off> Be verbose about what's happening. --dbhost= localhost hostname or IP to MySQL server --dbname= mogilefs database name to create/upgrade --dbrootuser= root MySQL administrator username. Only needed for initial setup, not subsequent upgrades --dbrootpass= <blank> MySQL administrator password. Only needed for initial setup, not subsequent upgrades --dbuser= mogile Regular MySQL user to create and/or use for MogileFS database. This is what the mogilefsd trackers connect as. --dbpass= <blank> You should change this, especially if your MySQL servers are accessible to other users on the network. But they shouldn't be if you're running MogileFS, because MogileFS assumes your network is closed. --yes Run without questions.
対話式にインストール出来るんで、そのまま答えてしまいましょう。
# ./mogdbsetup This will attempt to setup or upgrade your MogileFS database. It won't destroy existing data. Run with --help for more information. Run with --yes to shut up these prompts. Continue? [N/y]: y Create database name 'mogilefs'? [Y/n]: Y Grant all privileges to user 'mogile', connecting from anywhere, to the mogilefs database? [Y/n]: Y
これでデータベースが出来ているはずです。
確認してみましょう。
# /usr/local/mysql/bin/mysql -u mogile mogilefs Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 99 to server version: 4.1.16-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show tables; +--------------------+ | Tables_in_mogilefs | +--------------------+ | class | | device | | domain | | file | | file_on | | file_on_corrupt | | file_to_delete | | file_to_replicate | | host | | server_settings | | tempfile | | unreachable_fids | +--------------------+ 12 rows in set (0.00 sec)
今確認しましたけど、デフォルトではMyISAMになっちゃうみたいですね。
ソース見ないと回避の方法が分からないですね。そのうち調べます。
mogstoredのセットアップ
/trunk/server/confの中にmogstored.conf, mogilefsd.confの二つのファイルがあります。
特にmogstored.confなんですけど、このシンタックスはどうも1.0系の物らしくて動いてくれません。w
# mkdir -p /etc/mogilefs/ # cp *.conf /etc/mogilefs/
とするんですが、この中にあるmogstored.confに関しては下記のようにして下さい。
httplisten=127.0.0.1:7500 mgmtlisten=127.0.0.1:7501 docroot=/var/mogdata
- httplisten
- httpリクエストを受け付けるIP:Port
- mgmtlisten
- 管理サーバーのIP:Port
- docroot
- ファイルのstore先のルート
これでmogstoredが起動するはずです。
mogstoredのオプションにhelpは無いのですが、設定されてないので、--helpをつけるとGetOptionsがこけるのでhelpが見れます。*2
Usage: mogstored [OPTS] OPTS: --daemonize -d Daemonize --config=<file> Set config file (default is /etc/mogilefs/mogstored.conf) --httplisten=<ip:port> IP/Port HTTP server listens on --mgmtlisten=<ip:port> IP/Port management/sidechannel listens on --docroot=<path> Docroot above device mount points. Defaults to /var/mogdata
下の三項目がconfigで設定出来る項目って考えて良いと思います。
# mogstored -d
で起動しましょう。
mogilefsdのセットアップ
先ほど/etc/mogilefsにコピーしたmogilefsd.confを下記のように設定します。
daemonize = 1 db_dsn = DBI:mysql:mogilefs:host=localhost db_user = mogile # db_pass = conf_port = 7001 listener_jobs = 10 delete_jobs = 1 replicate_jobs = 5 mog_root = /mnt/mogilefs reaper_jobs = 1
- daemonize
- -d, --daemonオプションと一緒, daemon化する
- conf_port
- Clientからのリクエストを受け付けるポート
- listener_jobs
- Clientからのリクエスト処理数
- delete_jobs
- 削除の際のprocess数
- replicate_jobs
- レプリケーションのprocess数
- mog_root
- 多分nfsでのマウント関連?*3
- reaper_jobs
- どうもファイル削除関連のjobらしい
query_jobs'));
- monitor_jobs
- 監視jobのprocess数
またmogileユーザーを作っていない場合は、作っておきましょう。
# /usr/sbin/adduser mogile
これでmogileユーザーにてmogilefsdを起動します。
# sudo -u mogile mogilefsd
プロセスを見てみましょう。
# ps auxw | grep mog root 11656 0.0 0.8 24128 8944 ? S 08:03 0:00 /usr/bin/perl -w /usr/bin/mogstored -d mogile 11677 1.1 1.0 16832 11104 ? S 08:08 0:00 /usr/bin/perl /usr/bin/mogilefsd mogile 11678 0.0 1.0 16832 11096 ? S 08:08 0:00 /usr/bin/mogilefsd [checker] mogile 11679 0.1 1.0 16832 11136 ? S 08:08 0:00 /usr/bin/mogilefsd [replicate] mogile 11680 0.3 1.0 16832 11140 ? S 08:08 0:00 /usr/bin/mogilefsd [replicate] mogile 11681 0.0 1.0 16832 11140 ? S 08:08 0:00 /usr/bin/mogilefsd [replicate] mogile 11682 0.1 1.0 16832 11132 ? S 08:08 0:00 /usr/bin/mogilefsd [replicate] mogile 11683 0.1 1.0 16832 11140 ? S 08:08 0:00 /usr/bin/mogilefsd [replicate] mogile 11684 0.1 1.0 16832 11104 ? S 08:08 0:00 /usr/bin/mogilefsd [delete] mogile 11685 0.0 1.0 16832 11084 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11686 0.0 1.0 16832 11084 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11687 0.0 1.0 16832 11084 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11688 0.0 1.0 16832 11088 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11689 0.0 1.0 16832 11088 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11690 0.0 1.0 16832 11088 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11691 0.0 1.0 16832 11088 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11692 0.0 1.0 16832 11092 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11693 0.0 1.0 16832 11092 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11694 0.0 1.0 16832 11096 ? S 08:08 0:00 /usr/bin/mogilefsd [queryworker] mogile 11695 0.0 1.0 16832 11140 ? S 08:08 0:00 /usr/bin/mogilefsd [monitor] mogile 11696 0.0 1.0 16832 11140 ? S 08:08 0:00 /usr/bin/mogilefsd [reaper] root 11699 0.0 0.0 6120 772 pts/1 R+ 08:08 0:00 grep mog
起動してますね。
mogadmによるtrackersの設定確認
mogadmコマンドはMogileFS::Utilsをインストールした場合に含まれるコマンドで、実際のMogileFSの管理はこのコマンドで行うみたいです。
# mogadm Usage: mogadm [config options] <argument(s)> [argument options] Options: --lib=/path/to/lib Set this option to a path to include this directory in the module search path. --trackers=10.0.0.117:7001,10.0.0.118:7001,... Use these MogileFS trackers for status information. Arguments: check Check to ensure that all of the MogileFS system components are functioning and that we can contact everybody. The quickest way of ensuring that the entire MogileFS system is functional from the current machine's point of view. host add <host> [host options] host modify <host> [host options] host mark <host> <status> host delete <host> host list Functions for manipulating hosts. For add and modify, host options is in the format of normal command line options and can include anything in the "HOST OPTIONS" section. device add <host> [device id] device mark <host> <device id> <status> device delete <host> <device> device list Adding, editing, and deleting devices. The device id is optional in the add command: if you provide one, it will be setup using the provided id; else, a new id is assigned and provided to you for setting up the device. When marking devices, the status can be one of {alive|down|dead|readonly}. domain add <domain> domain delete <domain> domain list Simple commands for managing MogileFS domains. Note that you cannot delete a domain unless it has no classes and is devoid of files. class add <domain> <class> [class options] class modify <domain> <class> [class options] class delete <domain> <class> class list Commands for working with classes. Please see the "CLASS OPTIONS" section for the options to use with add/modify. Also, delete requires that the class have no files in it before it will allow the deletion.
特に気にせずMogileFSのモジュール郡をインストールした場合はlibの指定は不要です。
基本的にはhostはクラスタの登録。deviceは格納先の設定、domain, classで仮想上のファイルの区分けを行うって言う仕組みで合ってると思います。
従って順次値を設定していく事になります。
ここでは二台のサーバー構成でmogilefsを運用する事をサンプルにします。
それぞれのIPは*410.255.255.30, 10.255.255.31であるとします。
databaseは同じ場所を指すようにmogilefsd.confに記述して下さい。
このような複数構成の場合はmogadmや他のコマンドも同様にtrackersオプションを明示的に指定しないといけません。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" check Checking trackers... 10.255.255.30:7001 ... OK 10.255.255.31:7001 ... OK Checking hosts... No devices found on tracker(s).
このような形で表示されるはずです。
まずはhostの登録からはじめましょう。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host add 10.255.255.30 # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host add 10.255.255.31 # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host list 10.255.255.30 [1]: down IP: 10.255.255.30:7500 10.255.255.31 [2]: down IP: 10.255.255.31:7500
恐らくこのように表示されるはずです。
hostの初期markはdownになっています。諸々設定が完了した時にremarkする必要があります。
次にdeviceの登録をします。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device add 10.255.255.30 1 # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device add 10.255.255.31 2
ここで再度check, device listを確認しておきましょう。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" check Checking trackers... 10.255.255.30:7001 ... OK 10.255.255.31:7001 ... OK Checking hosts... [ 1] 10.255.255.30 ... skipping; status = down [ 2] 10.255.255.31 ... skipping; status = down No devices found on tracker(s).
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device list 10.255.255.30 [1]: down used(G) free(G) total(G) dev1: down 0.000 0.000 0.000 10.255.255.31 [2]: down used(G) free(G) total(G) dev2: down 0.000 0.000 0.000
まだダウンしてますね。このdeviceも後ほどremarkする必要があります。
最後にdomain, classを設定しましょう。
[root@oridev02 homepage]# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" domain add www.art-code.org [root@oridev02 homepage]# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" class add www.art-code.org testdata
この後にdomain listを確認します。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" domain list domain class mindevcount -------------------- -------------------- ------------- www.art-code.org default 0 www.art-code.org testdata 2
ここに出てくるmindevcountですが、man mogadmによれば、
CLASS OPTIONS --mindevcount=Number of devices the files in this class should be replicated across. Can be set to anything >= 1.
との事なので、deviceごとに含まれるファイルがいくつのdeviceにレプリカを作るかって言う設定値ですね。
この時点で、device, hostとremarkしていきます。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device mark 10.255.255.30 1 alive # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device mark 10.255.255.31 2 alive # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host mark 10.255.255.30 alive # mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host mark 10.255.255.31 alive
最後にdevice list, host listをもう一度見てみましょう。
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" device list 10.255.255.30 [1]: alive used(G) free(G) total(G) dev1: alive 0.000 0.000 0.000 10.255.255.31 [2]: alive used(G) free(G) total(G) dev2: alive 0.000 0.000 0.000
# mogadm --trackers="10.255.255.30:7001,10.255.255.31:7001" host list 10.255.255.30 [1]: alive IP: 10.255.255.30:7500 10.255.255.31 [2]: alive IP: 10.255.255.31:7500
これにてセットアップは完了です。
次回はtelnet, mogtoolにて動作の確認及びその中身、
またMogileFS::Clientを実際に使ってアクセスしてみます。