kumofsを一台のサーバーで動かす

hbstudy #10に参加してきたんですが、いいかげんkumofsくらい動かしてみないとなぁということで動かすだけ動かしてみました。
基本的には複数のサーバーで使われることを想定されてるものなので、この構成は、あまり検証には向かないはず。とりあえずどんな感じか触ってみたい人向け。(どんな手順で起動させるのか、とか管理ツールはどんな感じなのか、とか。

setup

kumofsまでのインストールは基本的には、
http://d.hatena.ne.jp/conceal-rs/20100119/1263871161

と同様。違うのはtar ballじゃなくてgit cloneして最新版をとってきたくらい。ruby版のmsgpackは、gem installではなく直接リポジトリをおとしてきて、ruby extconf.rb && make installした。

kumofsをinstallして、起動しようとすると、

kumo-manager: error while loading shared libraries: libmsgpackc.so.2: cannot open shared object file: No such file or directory

といわれてしまうのに少しつまづいたが、

sudo /sbin/ldconfig

しわすれていたのが原因

概要

kumofsのアーキテクチャは、manager, server, gatewayから構成される。managerはserverを監視するので最低2台は必要で、severは1つにつき2ノードにレプリカを用意するので、3ノード必要になるらしい。(1ノードでも動作させることはできるっぽい

とりあえずまとめてみると、必要なサーバーは次のscriptでまとめて起動できる

#!/bin/sh

screen -t dummy

# manager系はport 1000xで起動する
screen -t manager1 kumo-manager -v -l localhost:10001 -p localhost:10002
screen -t manager2 kumo-manager -v -l localhost:10002 -p localhost:10001

# server系はport 1100xで起動する. 
# replication用のportもあるらしいのでそれもズラしとかないと複数台起動できないっぽい
# ということで、そちらは1200xにする
# データは、/tmp/kumo$n.tchに保存させる
screen -t server1 kumo-server -v -l localhost:11001 -L 12001 -m localhost:10001 -p localhost:10002 -s /tmp/kumo1.tch
screen -t server2 kumo-server -v -l localhost:11002 -L 12002 -m localhost:10001 -p localhost:10002 -s /tmp/kumo2.tch
screen -t server3 kumo-server -v -l localhost:11003 -L 12003 -m localhost:10001 -p localhost:10002 -s /tmp/kumo3.tch

# gatewayはport 1300xで起動させる
screen -t gateway1 kumo-gateway -v -t 13001 -m localhost:10001 -p localhost:10002

既に起動しているscreen上で実行する前提で、dummyとやってるのは何故か最初のscreenでとまってしまうため

無事起動できたら、

kumoctl localhost:10001 status

で、server1, server2, server3がattachされていないのを確認して、

kumoctl localhost:10001 attach

で、attachする。

各サーバーの状況は、

 kumotop -m localhost:10001

で確認できる。managerのアドレスさえ知っておけばserverの場所は覚えてなくてもよいというのは管理の面では非常に便利

http://d.hatena.ne.jp/conceal-rs/20100119/1263871161

にあったruby scriptでデータをつっこんでみたが、どうも100おきにsleep 1とかしてやらないとgatewayのプロセスが落ちてしまうもよう。

ややinstallはめんどうなのでちゃんとした検証はdebを作るなりして環境を簡単に作れるようにしときたいかも。