Linux環境でのZooKeeperのセットアップと基本操作ガイド

Java実行環境の準備

まず、システムを更新してOpenJDKをインストールします。

sudo apt update
sudo apt install openjdk-11-jre-headless

ZooKeeperの導入と起動

公式ミラーからアーカイブを取得し、展開します。

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar xzf zookeeper-3.4.14.tar.gz

設定ファイルを作成してサービスを開始します。

cd zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
cd ../bin
./zkServer.sh start

単一マシン上での擬似クラスタ構成

同一ホスト上で複数ノードを動作させるために、ディレクトリを複製します。

cp -r zookeeper-3.4.14 zk-node1
cp -r zookeeper-3.4.14 zk-node2
cp -r zookeeper-3.4.14 zk-node3

各ノードのconf/zoo.cfgを個別に調整します。例としてzk-node1の設定:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zk-node1/data
dataLogDir=/var/log/zk-node1
clientPort=21811

server.1=localhost:28881:38881
server.2=localhost:28882:38882
server.3=localhost:28883:38883

データディレクトリと識別子ファイルを生成します。

mkdir -p /var/lib/zk-node{1,2,3}/data /var/log/zk-node{1,2,3}
echo 1 > /var/lib/zk-node1/data/myid
echo 2 > /var/lib/zk-node2/data/myid
echo 3 > /var/lib/zk-node3/data/myid

全ノードを起動し、状態を確認します。

for i in {1..3}; do ./zk-node$i/bin/zkServer.sh start; done
for i in {1..3}; do ./zk-node$i/bin/zkServer.sh status; done

分散クラスタ構成

複数サーバーに跨る本格的なクラスタは、各ノードを別マシンに配置し、IPアドレスを明示的に指定することで構築可能です。

クライアント操作とノード管理

カスタムポートで接続し、基本的なznode操作を行います。

./bin/zkCli.sh -server localhost:21811
[zk: localhost:21811(CONNECTED) 0] create /demo "Hello"
Created /demo
[zk: localhost:21811(CONNECTED) 1] ls /
[zookeeper, demo]
[zk: localhost:21811(CONNECTED) 2] get /demo
Hello
cZxid = 0x100000002
ctime = Mon Apr 06 22:01:48 CST 2020
mZxid = 0x100000002
mtime = Mon Apr 06 22:01:48 CST 2020
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
[zk: localhost:21811(CONNECTED) 3] delete /demo

メタデータフィールドの解説

  • cZxid:ノード作成時のトランザクションID
  • ctime:作成時刻
  • mZxid:最終更新時のトランザクションID
  • mtime:最終更新時刻
  • pZxid:子ノード変更時の最新トランザクションID
  • cversion:直下の子ノード追加/削除回数
  • dataVersion:データ内容の変更回数
  • aclVersion:アクセス制御リストの変更回数
  • ephemeralOwner:一時ノードの場合の所有セッションID(永続ノードなら0)
  • dataLength:データバイト長
  • numChildren:直下の子ノード数

タグ: ZooKeeper linux distributed-system

6月29日 20:42 投稿