RESTfulなKVS Terrastoreを使ってみる(1) - インストール
以前、ここで紹介されていたKVSのTerrastoreが気になっていたので試しに使ってみた。
"Terrastore"
Terrastore is a modern document store which provides advanced scalability and elasticity features without sacrificing consistency.
http://code.google.com/p/terrastore/
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ってあまり日本語の情報が無い様なのだけど、あえてこれを使う必要がないということなのだろうか??
他にも確かにいろいろ種類があるからなぁ。