blog

ZooKeeper クラスタの構築

任意のノードに移動して変更し、他のポイントにscpします。ノード238に移動して変更します。 ご覧のように、ノード240がリーダー、他の2ノードがフォロワーとなり、クラスタが正常に開始されました。 Z...

Jul 12, 2020 · 4 min. read
シェア

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の学習は、その理解と使用を深めるために、プロジェクトにまだ多くの練習が必要です。

ZooKeeper Getting Started Guide

Read next

EventHub-任意のコンポーネント通信

上記のコードでは、Publish-Subscribe パターンを使って DOM 要素のイベントを購読し、ユーザが対応するアクションを実行した時にイベントを発行しています。イベントの購読を手動で解除することも可能です。

Jul 12, 2020 · 1 min read