なお kumofs のアーキテクチャについてはこちらで紹介されている。
今回導入した環境は以下のとおり。
- OS: Ubuntu 9.10 (KVM)
必要パッケージの導入
コンパイルや動作のために必要となるパッケージを導入。
$ sudo apt-get install libtokyocabinet-dev $ sudo apt-get install ruby rubygems $ sudo apt-get install g++
MessagePack for C/C++ の導入
MessagePack の C/C++ はパッケージがないので自前でソースから導入する。この時点でのバージョンは 0.4.2。
$ wget "http://dl.sourceforge.jp/msgpack/46155/msgpack-0.4.2.tar.gz" $ tar xzf msgpack-0.4.2.tar.gz $ cd msgpack-0.4.2/ $ ./configure $ make $ sudo make install
MessagePack for Ruby の導入
一方 MessagePack for Ruby は gem で導入。
$ sudo gem install msgpack
kumofs のコンパイル
いよいよ kumofs のコンパイル。この時点でのバージョンは 0.3.1。特別やることはなかった。
$ http://github.com/downloads/etolabo/kumofs/kumofs-0.3.1.tar.gz $ tar xzf kumofs-0.3.1.tar.gz $ cd kumofs-0.3.1/ $ ./configure $ make $ sudo make install
kumofs を動かす
アーキテクチャの紹介でもともかく分散構成が基本であることを前面に出しているし、それを実現するための方法もとても簡単なのがすばらしい。でも単一のサーバ上で構築してもなんら問題なく動く。
まずはマネージャを起動。
$ sudo kumo-manager -v -l localhost &
続いてサーバを起動。
$ sudo kumo-server -v -l localhost -m localhost -s /var/kumodb.tch &
管理ツールで状態を確認してみる。VM 稼働かどうかは定かではないけども、なんか時間がおかしい。
$ kumoctl localhost status hash space timestamp: Thu Jan 01 09:00:00 +0900 1970 clock 0 attached node: not attached node: 127.0.0.1:19800
マネージャにサーバを登録。
$ kumoctl localhost attach $ kumoctl localhost status hash space timestamp: Tue Mar 02 23:38:08 +0900 2010 clock 124 attached node: 127.0.0.1:19800 (active) not attached node:
なぜか時間も正常に表示されるようになったぞ。
最後に、ゲートウェイを起動。アプリケーションはこのゲートウェイに対して通信する。
$ sudo kumo-gateway -v -m localhost -t 11211 &
使ってみる。直接つっついてみるケースと、プログラムからのアクセスの両方をやってみた。
$ telnet localhost 11211 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. set foo 0 0 5 12345 STORED get foo VALUE foo 0 5 12345 END
$ sudo gem install memcache-client $ sudo gem install system_timer $ irb require 'rubygems' require 'memcache' kumofs = MemCache::new 'localhost:11211' kumofs.set 'foo', 123 kumofs.get 'foo' => 123