matsukaz's blog

Agile, node.js, ruby, AWS, cocos2d-xなどなどいろいろやってます

Zookeeperをローカル環境で複数ノード起動する方法

検証でZookeeperを複数ノード起動する必要があったので、ローカル環境で動かす方法を整理。

インストール

なにはともあれインストール。ダウンロードは この辺 からたどれるはず。今回は zookeeper-3.4.2.tar.gz を利用。適当な場所に展開(以降、展開先ディレクトリを$ZOOKEPER_HOMEとする)。

環境設定

Zookeeperの起動には設定ファイルが必要。$ZOOKEPER_HOME/conf 配下の zoo_sample.cfg をコピーして zoo01.cfg を作成。

cd $ZOOKEPER_HOME/conf
cp zoo_sample.cfg zoo01.cfg

zoo01.cfg を編集。dataDirの修正(ここでは$ZOOKEPER_HOME/data01を利用)と、最終行に server.x の記述を追記する。

clientPort=2181
dataDir=$ZOOKEPER_HOME/data01

server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

zoo01.cfg をコピーして zoo02.cfg と zoo03.cfg を作成。

cp zoo01.cfg zoo02.cfg
cp zoo01.cfg zoo03.cfg

zoo02.cfg と zoo03.cfg を編集。dataDirの修正と、clientPort の値をそれぞれ 2182 と 2183 にする。

clientPort=2182
dataDir=$ZOOKEPER_HOME/data02
clientPort=2183
dataDir=$ZOOKEPER_HOME/data03

dataDir で指定したディレクトリを作成。ディレクトリ配下にmyidというファイルを作成し、値を server.x で指定したx値を設定する。

mkdir $ZOOKEPER_HOME/data01
echo 1 > $ZOOKEPER_HOME/data01/myid

mkdir $ZOOKEPER_HOME/data02
echo 2 > $ZOOKEPER_HOME/data02/myid

mkdir $ZOOKEPER_HOME/data03
echo 3 > $ZOOKEPER_HOME/data03/myid

起動と停止

あとは作成した設定ファイルを指定して起動すればOK。

$ZOOKEPER_HOME/bin/zkServer.sh start $ZOOKEPER_HOME/conf/zoo01.cfg
$ZOOKEPER_HOME/bin/zkServer.sh start $ZOOKEPER_HOME/conf/zoo02.cfg
$ZOOKEPER_HOME/bin/zkServer.sh start $ZOOKEPER_HOME/conf/zoo03.cfg

停止も同様。

$ZOOKEPER_HOME/bin/zkServer.sh stop $ZOOKEPER_HOME/conf/zoo01.cfg
$ZOOKEPER_HOME/bin/zkServer.sh stop $ZOOKEPER_HOME/conf/zoo02.cfg
$ZOOKEPER_HOME/bin/zkServer.sh stop $ZOOKEPER_HOME/conf/zoo03.cfg