クラスターを構築するためのZooKeeperの非常に詳細な手順

Zookeeperクラスターを構築する

1.1建設要件

実際のクラスターは異なるサーバーにデプロイする必要がありますが、テストすると、同時に多数の仮想マシンを起動します。メモリが圧倒されるため、通常は疑似クラスターを構築します。つまり、すべてのサービスが構築されます。 1つの仮想マシン。、ポートで区別します。

ここでは、3ノードのZookeeperクラスター(疑似クラスター)が必要です。

1.2準備

クラスターのテストサーバーとして仮想マシンを再デプロイします。

(1)JDKをインストールします[この手順は省略します]

(2)Zookeeper圧縮パッケージをサーバーにアップロードします

(3)Zookeeperを解凍し、/ usr / local / zookeeper-clusterディレクトリを作成して、解凍したZookeeperを次の3つのディレクトリにコピーします。

/ usr / local / zookeeper-cluster / zookeeper-1

/ usr / local / zookeeper-cluster / zookeeper-2

/ usr / local / zookeeper-cluster / zookeeper-3

[root@localhost ~]# mkdir /usr/local/zookeeper-cluster
[root@localhost ~]# cp -r  apache-zookeeper-3.5.6-bin /usr/local/zookeeper-cluster/zookeeper-1
[root@localhost ~]# cp -r  apache-zookeeper-3.5.6-bin /usr/local/zookeeper-cluster/zookeeper-2
[root@localhost ~]# cp -r  apache-zookeeper-3.5.6-bin /usr/local/zookeeper-cluster/zookeeper-3

(4)データディレクトリを作成し、confの下のzoo_sample.cfgファイルの名前をzoo.cfgに変更します。

mkdir /usr/local/zookeeper-cluster/zookeeper-1/data
mkdir /usr/local/zookeeper-cluster/zookeeper-2/data
mkdir /usr/local/zookeeper-cluster/zookeeper-3/data

mv  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

(5)各ZookeeperのdataDirとclientPortをそれぞれ2181 21822183として構成します

/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfgを変更します

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg

clientPort=2181
dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data

/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfgを変更します

vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg

clientPort=2182
dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data

/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfgを変更します

vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

clientPort=2183
dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data

1.3クラスターを構成する

(1)各zookeeperのデータディレクトリに、内容1、2、および3のmyidファイルを作成します。このファイルは、各サーバーのIDを記録するためのものです

echo 1 >/usr/local/zookeeper-cluster/zookeeper-1/data/myid
echo 2 >/usr/local/zookeeper-cluster/zookeeper-2/data/myid
echo 3 >/usr/local/zookeeper-cluster/zookeeper-3/data/myid

(2)各飼育係のzoo.cfgでクライアントアクセスポート(clientPort)とクラスターサーバーのIPリストを設定します

クラスタサーバーのIPリストは次のとおりです

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

server.1=192.168.149.135:2881:3881
server.2=192.168.149.135:2882:3882
server.3=192.168.149.135:2883:3883

説明:サーバー。サーバーID =サーバーIPアドレス:サーバー間の通信ポート:サーバー間の投票ポート

クライアントおよびサーバー通信のデフォルトポート:2181

サーバー間の通信用のデフォルトポート:2881

サーバー間の投票用のデフォルトポート:3881

ZooKeeperのAdminServiceサービスは、デフォルトでポート8080を占有します

選出は、ここではサーバーID番号のサイズに基づいています

1.4クラスターを開始します

クラスターを開始するには、各インスタンスを個別に開始します。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

ここに画像の説明を挿入

起動後、各インスタンスの実行状態を確認します

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

最初のクエリ最初のサービス、モードフォロア手段であるフォロワ(から)

ここに画像の説明を挿入

次に、2番目のサービスにクエリを実行します。モードはリーダーです。つまり、リーダー(マスター)です。

**理由:**実行できるサーバーが2つあります。実行可能なサーバーの数が、クラスター内のサーバーの総数の半分を超えていること、および2番目のサーバーのIDがこの時点で最大であるため、満足しています。時間、1回目は2回目、2回目は自分で投票したので、2位がリーダーになります

ここに画像の説明を挿入

3番目のクエリはフォロワー(から)です

ここに画像の説明を挿入

理由:新しく追加されたサーバーは既存のリーダーに影響を与えません

1.5クラスター例外のシミュレーション

(1)まず、スレーブサーバーがハングアップした場合にどうなるかをテストしてみましょう。サーバー3を停止し、No.1とNo.2を観察して、ステータスが変化していないことを確認します。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh stop

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

ここに画像の説明を挿入

3ノードのクラスター、スレーブサーバーがダウンしており、クラスターは正常であると結論付けられます。

(2)No.1サーバー(スレーブサーバー)を再度停止し、No.2(マスターサーバー)の状態を確認して、停止していることを確認します。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh stop

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

ここに画像の説明を挿入

このことから、3ノードクラスターでは2台のスレーブサーバーがダウンしており、マスターサーバーは稼働できないと結論付けられます。実行可能なマシンの数がクラスターの総数の半分を超えないためです。

(3)No.1サーバーを再起動したところ、No.2サーバーが正常に動作し始めたことがわかりました。そして、それでもリーダー。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

ここに画像の説明を挿入

(4)また、No。3サーバーを起動し、No。2サーバーを停止し、停止後のNo.1とNo.3の状態を監視します。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh stop

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

ここに画像の説明を挿入

サーバー3が新しいリーダーになったことを発見

このことから、クラスター内のメインサーバーがダウンすると、クラスター内の他のサーバーが自動的に選択状態を実行し、新しいリーダーを生成すると結論付けました。

(5)No.2サーバーを再起動した後、No.2サーバーは再び新しいリーダーになりますか?

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

ここに画像の説明を挿入

サーバー2は、起動後もフォロワー(スレーブサーバー)であり、サーバー3はリーダー(マスターサーバー)であり、サーバー3のリーダーシップを揺るがしていないことがわかります。

このことから、リーダーが作成されると、新しいサーバーがクラスターに再度追加され、現在のリーダーは影響を受けないと結論付けました。

おすすめ

転載: blog.csdn.net/weixin_49343190/article/details/112967154