RESTfulなKVS Terrastoreを使ってみる(1) – インストール

以前、ここで紹介されていたKVSのTerrastoreが気になっていたので試しに使ってみた。

"Terrastore"
Terrastore is a modern document store which provides advanced scalability and elasticity features without sacrificing consistency.

Terrastoreの特徴は以下の様なところ。

  • プログラムはJava上で動く(インストール時にはantが必要)
  • 不揮発性(オンメモリなKVSではなくて、ファイルシステムにストアされる)
  • プロトコルにはHTTPを利用, RESTful
  • サーバはクラスタ化可能
  • クラスタ化したときの各ノードへのコピーやバランシングは自動的に行うことができる
  • ストアする際のデータ形式はJSON
  • Java向けのクライアントライブラリが用意してある

といったところか。
で、実際に簡単に動かしてみた際のメモ。ほとんど、プロジェクトのホームページのドキュメントと同じですが、自分のメモとして使うために残しておく。

先程のTerrastoreプロジェクトのダウンロードページにある terrastore-0.6.0-dist.zip (本日現在) をダウンロード。
zipファイルを展開して、antを使ってインストールする。
今回はマスターサーバが単独の方法でインストール。
ここでは、マスターサーバを/Users/hideack/terrastore/masterに、サーバ(slave)を/Users/hideack/terrastore/serverにインストールする。

% cd cd terrastore-0.6.0-dist/
% ant -f terrastore-install.xml single-master -Dinstall.dir=/Users/hideack/terrastore/master
Buildfile: terrastore-install.xml
single-master:
version:
[echo] Terrastore Install Tool - Version 0.6.0
common-master:
[delete] Deleting directory /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install
[unzip] Expanding: /Users/hideack/pj/terrastore/terrastore-0.6.0-dist/terrastore-master/terrastore-master.zip into /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install
[copy] Copying 1 file to /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install/terrastore-master
[copy] Copying 1 file to /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install/terrastore-master
[copy] Copying 148 files to /Users/hideack/terrastore/master
[copy] Copied 44 empty directories to 3 empty directories under /Users/hideack/terrastore/master
BUILD SUCCESSFUL
Total time: 6 seconds

つづけて、サーバ(slave)をインストールする。

% ant -f terrastore-install.xml server -Dinstall.dir=/Users/hideack/terrastore/server
install.dir=/Users/hideack/terrastore/server
Buildfile: terrastore-install.xml
server:
version:
[echo] Terrastore Install Tool - Version 0.6.0
common-server:
[delete] Deleting directory /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install
[unzip] Expanding: /Users/hideack/pj/terrastore/terrastore-0.6.0-dist/terrastore-master/terrastore-master.zip into /var/folders/1d/1dGjSJWcEkCa7X+xoB+EvE+++TI/-Tmp-/terrastore-install
[copy] Copying 71 files to /Users/hideack/terrastore/server
[copy] Copying 77 files to /Users/hideack/terrastore/server/terrastore-master-libs
[copy] Copying 1 file to /Users/hideack/terrastore/server/terrastore-master-libs
BUILD SUCCESSFUL
Total time: 6 seconds

これでインストールされたので、早速起動してみる。
まず、マスターサーバを立ち上げる。

% cd /Users/hideack/terrastore/master
% ./start.sh
./start.sh: the JAVA_HOME environment variable is not defined correctly

むぅ、環境変数JAVA_HOMEを設定していなかったので怒られた。
MacOSでJavaを使っていてそこで動かそうとしているので、

% export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home

と書いて設定する。
改めて起動させてみる。

% cd /Users/hideack/terrastore/master
% ./start.sh
Terrastore Master 0.6.0 - 16:13:17.931 - Terracotta 3.3.0, as of 20100716-150712 (Revision 15922 by cruise@su10mo5 from 3.3)
Terrastore Master 0.6.0 - 16:13:18.627 - Successfully loaded base configuration from file at '/Users/hideack/terrastore/master/bin/./../terracotta-config.xml'.
Terrastore Master 0.6.0 - 16:13:19.026 - Log file: '/Users/hideack/terrastore/master/bin/./../tc-data/server-logs/terracotta-server.log'.
Terrastore Master 0.6.0 - 16:13:19.533 - Available Max Runtime Memory: 469MB
Terrastore Master 0.6.0 - 16:13:20.124 - JMX Server started. Available at URL[service:jmx:jmxmp://0.0.0.0:9520]
Terrastore Master 0.6.0 - 16:13:26.373 - Becoming State[ ACTIVE-COORDINATOR ]
Terrastore Master 0.6.0 - 16:13:26.410 - Terracotta Server instance has started up as ACTIVE node on 0.0.0.0:9510 successfully, and is now ready for work.

無事、起動。
続けてサーバ(Slave)を立ち上げる。

% ./start.sh --httpPort 8080 --nodePort 6000 --master localhost:9510
Starting Terrastore Server ...
Terrastore Server 0.6.0 - 16:26:28.997 - Welcome to Terrastore.
Terrastore Server 0.6.0 - 16:26:29.012 - Powered by Terracotta (http://www.terracotta.org).
Terrastore Server 0.6.0 - 16:26:29.012 - Listening for HTTP requests on 127.0.0.1:8080
Terrastore Server 0.6.0 - 16:26:29.038 - Listening for node requests on 127.0.0.1:6000
Terrastore Server 0.6.0 - 16:26:29.038 - Reconnection timeout (in milliseconds) set to 10000
Terrastore Server 0.6.0 - 16:26:29.039 - Node communication timeout (in milliseconds) set to 10000
Terrastore Server 0.6.0 - 16:26:29.039 - Number of http threads: 100
Terrastore Server 0.6.0 - 16:26:29.039 - Number of worker threads: 20
Terrastore Server 0.6.0 - 16:26:53.015 - Configuring event bus: class terrastore.event.impl.MemoryEventBus
Terrastore Server 0.6.0 - 16:26:53.578 - Set up this cluster terrastore-cluster
Terrastore Server 0.6.0 - 16:26:53.626 - Joining this node terrastore-cluster:ServerID[0]
Terrastore Server 0.6.0 - 16:26:53.638 - Set up this node terrastore-cluster:ServerID[0]

これも立ち上がった。
KVSから値を取得したり、値を格納する際のREST APIで与えられる命令はこのサーバ(Slave)側のHTTPポートへ投げればよいことになる。
(ここでは、8080番ポートをHTTPの口として設定している。)

では、実際に簡単にKey/ValueをStoreしようと思ったところで電池切れ。明日以降へ続く。
ところで、このKVSってあまり日本語の情報が無い様なのだけど、あえてこれを使う必要がないということなのだろうか??
他にも確かにいろいろ種類があるからなぁ。