kikumotoのメモ帳

インフラ・ミドル周りを中心に、興味をもったことを適当な感じで。twitter : @takakiku

CloudStoreを動かす

前回コンパイルが済んだので、今回は動作させるまでをメモしておく。基本的に、Deploying KFS の手順に従っている。
想定しているサーバ構成は以下のような感じ。

ノード名 役割
kfs0 metaserver
kfs1 chunkserver
kfs2 chunkserver
kfs3 chunkserver

まず、kfs0 から全てのノードに ssh でパスワードなしでアクセスできるように設定しておく。たとえば、kfs0 上で

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

として生成できた ~/.ssh/id_dsa.pub を各ノードに配布し各ノードで

$ cat id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

としておく感じ。

次に、設定ファイルを用意する。これは、kfs-0.3 解凍ディレクトリ配下の scripts ディレクトリに作成する。machines.cfg を以下のように作成した。

[metaserver]
node: kfs0
clusterkey: kfs-test-cluster
rundir: /home/kfs/meta
baseport: 20000
loglevel: INFO
numservers: 2
[chunkserver_defaults]
rundir: /home/kfs/chunk
chunkDir: /home/kfs/chunk/bin/kfschunk
baseport: 30000
space: 5 G
loglevel: INFO

なお、今回は kfs ユーザ、ホームディレクトリ /home/kfs として作業した。これらは、すべてのノードで用意済みである。
また、machines.txt には chunkserver となるホスト名を列挙する。

kfs1
kfs2
kfs3

KFS では WebUI による状況の確認ができるようになっているが、これを使うにはこの段階で

cp machines.txt ../webui/all-machines.txt

のようにして、webui ディレクトリに all-machines.txt を作成しておく。
以上の設定ができれば、kfs-3.0/scripts ディレクトリにて

$ python kfssetup.py -f machines.cfg -m machines.txt -b ~/cloudstore -w ../webui

を実行する。これにより、各サーバに必要なファイルが配布される。

これで開始する準備が整ったので、kfs0:/home/kfs/meta/scripts ディレクトリにて

$ python kfslaunch.py -f machines.cfg -m machines.txt -s

を実行する。これで、chunkserver 上でもサービスが開始される。

起動しているかの確認は、前回のコンパイル・インストールの設定であれば、/home/kfs/cloudstore/bin に kfsping というのがあるので、以下のように実行してやる。

$ ./kfsping -m -s kfs0 -p 20000
Up servers: 3
s=192.168.251.83, p=30000, rack=251, used=0(GB), free=4.17221(GB), util=0%, nblocks=0, lastheard=55 (sec), ncorrupt=0, nchunksToMove=0
s=192.168.251.81, p=30000, rack=251, used=0(GB), free=4.19322(GB), util=0%, nblocks=0, lastheard=55 (sec), ncorrupt=0, nchunksToMove=0
s=192.168.251.82, p=30000, rack=251, used=0(GB), free=4.15773(GB), util=0%, nblocks=0, lastheard=55 (sec), ncorrupt=0, nchunksToMove=0

もしくは、ブラウザから

にアクセスする。

停止は、

python kfslaunch.py -f machines.cfg -m machines.txt -S

とする。(s/S で start/stop はちと間違いやすいような気がする。。。)

とりあえず、動くところまでというとこで、今回はここまで。