ZooKeeperクラスタのセットアップ
スタンドアロン起動
ZooKeeperの準備
zookeeper.apache.org/releases.ht...
ダウンロードしたパッケージを解凍
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
設定ファイルを修正
cd conf/
mv zoo_sample.cfg zoo.cfg
ここでは、スタンドアロン起動用のデフォルトの設定ファイルを使用します。
設定ファイルのdataDirとclientPortは必要に応じて変更できます。dataDirはデフォルトで/tmpパスにありますが、通常は変更する必要があります。
zk
./bin/zkServer.sh start
zk へのクライアント接続をテストします。
./bin/zkCli.sh -server .1:2181
help と入力すると、zkCli のコマンドが表示されます。
[zk: .1:2181(CONNECTED) 2] ls /
[zookeeper]
[zk: .1:2181(CONNECTED) 15] create /test sample
Created /test
[zk: .1:2181(CONNECTED) 16] get /test
sample
[zk: .1:2181(CONNECTED) 17] set /test bar
[zk: .1:2181(CONNECTED) 20] get /test
bar
[zk: .1:2181(CONNECTED) 21] delete /test
[zk: .1:2181(CONNECTED) 23] ls /
[zookeeper]
クラスタのセットアップ
準備
- 3ノード、ここでは3台のVMノードを使うので、192.168.199.832 192.168.199.932 192.168.199.042 の3ノードをそれぞれ用意しました。
- 各ノードにzkを転送
- サーバポートをオープン
zipを解凍
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
3ノード全てで実行
設定ファイルの変更
適当なノードに行き、設定ファイルを変更します。ここではノード238に行って変更します。
vim conf/zoo.cfg上のボックスで囲まれた2つの設定項目に注目してください。
dataDirここでは、上記のスタンドアロン起動では変更しませんでしたが、ここで少し変更するには、行のtmpの下ではなく、設定する独自の習慣によると、ここでは/data/zookeeperを設定します。
cd conf/ mv zoo_sample.cfg zoo.cfg
server.xは、ここでzkの各ポイントのホストとオープン通信ポートを設定することです、フォーマットは、なぜ2つのポートが必要です、ここでは公式サイトの説明から引用:Finally, note the two port numbers after each server name: " 2888" and "3888". Peers use the former port to connect to other peers. Such a connection is necessary so that peers can communicate, for example, to agree upon the order of updates. More specifically, a ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port. Because the default leader election also uses TCP, we currently require another port for leader election. This is the second port in the server entry.
設定ファイルを変更した後、どのノードがserver.xであるかを示すために、新しいmyidファイルを作成する必要があります:上記で設定したdataDirディレクトリに移動し、新しいmyidファイルを作成し、server.xをxに書き込みます:
vim conf/zoo.cfg
他の2つのノードについても同様に行い、対応するx.
cd /data/zookeeper
echo 1 > myid
zkを起動します。
各ノードが起動コマンドを実行します:
// .
cd /data/zookeeper
echo 2 > myid
// .
cd /data/zookeeper
echo 3 > myid
プロセスを表示するにはjpsを使用します:
./bin/zkServer.sh start
QuorumPeerMainはzkプロセスです。
3ノードがすべて起動したら、クラスタのステータスをチェックして正常に起動したかどうかを確認します:
238 :
[root@localhost apache-zookeeper-3.6.1-bin]# jps
29372 Jps
29245 QuorumPeerMain
239.
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
240.
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
ご覧のように、ノード240がリーダーで、他の2つのノードはフォロワーです。
zkへのクライアント接続のテスト
zkCli を使用して 240 に接続し、動作することを確認します。
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
概要
ZooKeeperは基本的な分散連携サービスとして、dubo、kafka、solrなど様々なところで利用されています。
全体として、構築の全プロセスはまだ非常に簡単です。zkの学習は、その理解と使用を深めるために、プロジェクトにまだ多くの練習が必要です。