[シリーズ] 1.ZooKeeper ZooKeeperのスタンドアローン版、擬似クラスタ環境構築へ

ZooKeeperのインストールモード主に3つの種類:

  1. スタンドアロン版(スタンドアロンモード)モード:だけのZooKeeperサービス

  2. 擬似クラスタモード:シングル、複数のZooKeeperサービス

  3. クラスタモード:マルチマシンのZooKeeperサービス

1スタンドアロン版(スタンドアロンモード)のインストール

ます。http://zookeeper.apache.org/releases.html#downloadアドレスをダウンロードするZooKeeperの公式サイト

示すように動作:

挿入画像は、ここで説明し
ますが、マウスにしたくない場合は、その点に注意してください 必ず次の安定版(安定版リリースを)作る 非安定版をインストールしたときに、未知の例外の多様であってもよいです。
ここでの挿入の説明
3.4.14 の例えばバージョン、 Centos系统 チュートリアルが輝くことができるので、インストール時には、インストールガイドには、いくつかのソフトウェアを書き込む前に、それは、取るべきインストールパスなど、インストールの多くの詳細、などのステップにしたいメッセージをでしたコピー操作。これは少しを必要とする、ハァッ、あなたを満たします!

 

1.1インストールパッケージをダウンロードします

次のコマンドを入力します。

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

図は次のとおりです。

ここに画像を挿入説明

1.2インストールパッケージを抽出

tar -zxvf apache-zookeeper-3.4.14.tar.gz

解凍が完了した後、減圧パケット移動への/ usr:

 mv apache-zookeeper-3.4.14 /usr/

そして、Apache-飼育係-3.4.14名前変更飼育係-3.4.14。

この時点で、次のようにZooKeeperのディレクトリ構造がある見ることができます:

[root@instance-e5cf5719 zookeeper-3.4.14]# ls
bin        data             ivy.xml      logs        README.md             zookeeper-3.4.14.jar      zookeeper-3.4.14.jar.sha1  zookeeper-docs  zookeeper-recipes
build.xml  dist-maven       lib          NOTICE.txt  README_packaging.txt  zookeeper-3.4.14.jar.asc  zookeeper-client           zookeeper-it    zookeeper-server
conf       ivysettings.xml  LICENSE.txt  pom.xml     src                   zookeeper-3.4.14.jar.md5  zookeeper-contrib          zookeeper-jute
  • binディレクトリには、サービスプロセスZK、ZKクライアント、および他のスクリプトを含む、実行可能なスクリプトのディレクトリを--zk。これは、Linux環境下.SHスクリプトは、Windows環境でスクリプトを.cmdが。

  • confディレクトリ - プロファイルディレクトリ。サンプル設定ファイルのzoo_sample.cfgは、あなたが通常zoo.cfg、自分の名前を変更する必要があります。ログのlog4j.propertiesの設定ファイル。

1.3設定zoo.cfg

ディレクトリに/Usr/zookeeper-3.4.14/conf、あなたはzoo_sample.cfgを見ることができ、これはあなたが自分自身の、一般的なコマンドzoo.cfgのために修正する必要があり、サンプル設定ファイルです。

cp zoo_sample.cfg zoo.cfg

あなたはファイルの内容を見ることができますZoo.cfg。

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

、わずか数行のコメントを削除した後、実際には、良い複雑な心境を見て:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
    • = 2000 tickTime  :人気のポイントが呼び出されると滴答时间、ハートビート間隔で、デフォルトは2000ミリ秒、つまり2秒ごとに一回のハートビートです。

 

    • クライアントとサーバーまたは時間のサーバーとサーバーの指標間のハートビートを維持するためのtickTimeは、すなわち、ハートビートごとtickTimeを送信します。

    • ハートビートアクション:マシンの動作状態の監視、タイムコントロールフォロワーハートビートの指導者とのコミュニケーション、そのデフォルト(リーダーとフォロワー)セッションのハートビート間隔は2倍の長である、すなわち2 * tickTimeを。

 

  • = 10 initLimit:ブートプロセスの間にフォロワーが、その後、彼らはフォロワーが時間initLimit以内に作業を完了できるようにするには、外部サービス、リーダーの初期状態を決定することができ、リーダーからのすべての最新のデータを同期します。デフォルト値は、すなわち10 * tickTime 10です。そうでない短い時間で、増加クラスタ管理のZooKeeperの数、フォロワーは、リーダーノードから時刻同期データは、それに応じて長くなり、起動ノードとして、デフォルトの設定項目を変更する必要はありませんデータの同期は、この場合、適切に必要なパラメータを大きく調整し、終了します。

  • = 5 syncLimit。 リーダーノードと心拍のフォロワノードの最大遅延時間ZooKeeperのクラスタでは、リーダーノードのハートビートを検出し、確認するために、すべての後続ノードノードの生存か。デフォルト値は5、すなわち5 * tickTimeです。

  • = DATADIRを/ tmp /のZooKeeper:スナップショットファイルを格納しZooKeeperのデフォルトのディレクトリ・サーバー。/ tmpディレクトリ内のファイルを簡単に、格納ディレクトリを変更する必要性を失って、自動的に削除することができます。

  • 2181 = CLIENTPORT:クライアントポートのZooKeeperサーバー。ZooKeeperのは、このポートをリッスンし、クライアントがアクセス要求を受信します。

温馨提示:私たちは、最初の手の情報を受け取るために、公式文書を見て学ばなければなりません。それが英語であるが、が、単語や文法は比較的簡単とフォローするのは簡単です。
次のように公式サイトで説明しています。

  • tickTime:ZooKeeperのが使用するミリ秒単位の基本時間単位。ハートビートを行うために使用され、最小セッションタイムアウトは二回tickTimeになります。

  • DATADIR:インメモリデータベースのスナップショットを保存する場所と、特に指定しない限り、データベースへの更新のトランザクション・ログ。

  • CLIENTPORT:クライアント接続をリッスンするポート

飼育係-3.4.14ディレクトリの下に作成したデータファイルとログ次のように、:

[root@instance-e5cf5719 zookeeper-3.4.14]# mkdir data
[root@instance-e5cf5719 zookeeper-3.4.14]# mkdir logs

官方文档也有对此进行说明,指出在生产环境中ZooKeeper是会长期运行的,ZooKeeper的存储就需要专门的文件位置进行存储dataDir和logs。データを格納するのに使用されるフォルダ内のインメモリデータベースのスナップショット、MYIDクラスタファイルはこのフォルダに格納されています。

長い生産システムを実行するためのZooKeeperストレージは、外部(DATADIRとログ)を管理する必要があります。

次のようにzoo.cfgは変更しました:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# dataDir=/tmp/zookeeper
# 数据文件夹
dataDir=/usr/zookeeper-3.4.14/data
# 日志文件夹
dataLogDir=/usr/zookeeper-3.4.14/logs
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

1.4開始

binディレクトリへのZooKeeper:

[root@instance-e5cf5719 zookeeper-3.4.14]# cd bin/
[root@instance-e5cf5719 bin]# ls
README.txt  zkCleanup.sh  zkCli.cmd  zkCli.sh  zkEnv.cmd  zkEnv.sh  zkServer.cmd  zkServer.sh  zkTxnLogToolkit.cmd  zkTxnLogToolkit.sh  zookeeper.out
  • zkCleanup.sh  :トランザクション・ログ・ファイルとスナップショットのデータファイルを含む履歴データクレンジング、のためのZooKeeper

  • zkCli.sh:ZooKeeperのサーバー接続のコマンドラインクライアント

  • zkEnv.sh:環境変数の設定

  • zkServer.sh:スタートのZooKeeperサーバー

スタートのZooKeeper:

./zkServer.sh start

以下に示すように正常に起動しました:

ここで説明した画像が挿入
のZooKeeperのステータスを表示することができます:

 

./zkServer.sh status

以下のように状態情報:

ここで説明した画像が挿入
できる help コマンドの下に見える./zkServer.sh

 

[root@instance-e5cf5719 bin]# ./zkServer.sh help
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14/bin/../conf/zoo.cfg
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
  • 開始:スタートは、背景用のZooKeeperサーバーを起動します

  • スタートフォアグラウンド:サーバを起動するには、フロントデスク

  • STOP:ストップ

  • 再起動:再起動

  • ステータス:取得状態

  • アップグレード:アップグレード

  • 印刷-CMD:印刷および関連ZooKeeperのコマンドラインパラメータ

1.5のZooKeeperクライアント接続

接続:

./zkCli.sh -server 127.0.0.1:2181

その

./zkCli.sh -server <ip>:<port>

結果は以下の通りであります:

ここに画像を挿入する説明
の助けは より多くの関連するコマンドを取得します:

 

[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port

よく使用するコマンド:

コマンド 説明
助けて すべての操作コマンド
STAT ノードの状態をチェック、即ち、ノードが存在するか否かを判断します
セット 更新ノードデータ
取得する ノードデータの取得
LSパス[ウォッチ] 現在のznodeの内容を表示するlsコマンドを使用します
作ります 普通は作成され、  -s  それが配列を含む、-e 一時的(または再起動タイムアウトが消えます)
削除 [ノードの削除
RMR 再帰的な削除ノード

それは新しいのznode(実行作成し、いくつかの簡単なテストに関連するコマンドかもしれcreate / zk_test my_data)、「my_data」に付属の情報を。

[zk: 127.0.0.1:2181(CONNECTED) 1] create /zk_test my_data
Created /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[zookeeper, zk_test]

我々は成功を作成zk_test見ることができます。あなたはできるgetノードzk_testコマンドで情報を見てみましょう。

[zk: 127.0.0.1:2181(CONNECTED) 3] get /zk_test
my_data
cZxid = 0x7
ctime = Thu Dec 05 16:32:20 CST 2019
mZxid = 0x7
mtime = Thu Dec 05 16:32:20 CST 2019
pZxid = 0x7
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0

setzk_test内部情報を変更することができます。

[zk: 127.0.0.1:2181(CONNECTED) 4] set /zk_test junk
cZxid = 0x7
ctime = Thu Dec 05 16:32:20 CST 2019
mZxid = 0x8
mtime = Thu Dec 05 16:37:03 CST 2019
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 5] get /zk_test
junk
cZxid = 0x7
ctime = Thu Dec 05 16:32:20 CST 2019
mZxid = 0x8
mtime = Thu Dec 05 16:37:03 CST 2019
pZxid = 0x7
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

することでdelete、あなたのノードを削除することができます。

[zk: 127.0.0.1:2181(CONNECTED) 6] delete /zk_test
[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[zookeeper]

2擬似クラスタのセットアップ

私たちは、擬似クラスタを構築するために3つのZooKeeperをセットアップします。我々はすでに飼育係-3.4.14を構築している、それが今のZooKeeper-3.4.14-1という名前の2つのコピー、飼育係-3.4.14-2になります。

[root@instance-e5cf5719 usr]# cp -r zookeeper-3.4.14 zookeeper-3.4.14-1
[root@instance-e5cf5719 usr]# cp -r zookeeper-3.4.14 zookeeper-3.4.14-2

この時点で、3つのZooKeeperのファイルがあるとまったく同じ各ZooKeeperの設定ファイルのために少し修正を行うための擬似クラスタの必要性を構築し、。

3 ZooKeeperの変更/conf/zoo.cfgでは、主に三つの位置を変更するには:端口号日志路径集群配置

ここで画像が記載インサート
本明細書に挿入されたピクチャを説明
本明細書に記載挿入ピクチャ
zoo.cfg構成では、サーバー構成は、以下の形式があり、ZooKeeperのクラスタを示し、サーバ設定のセットを追加し、3つのノードを有しています。
server.<myid>=<IP>:<Port1>:<Port2>
  • myid:ノードの数は、範囲の数は、1〜255の整数で、クラスタ内で一意でなければなりません

  • IP:ノードのIPアドレスは、127.0.0.1またはローカルホストのローカル環境と同様に、配置されています。

  • Port1:ハートビートデータと共に使用リーダーおよび従動ノードポートノードの同期。

  • Port2:コミュニケーションのための投票ポートを行う際にリーダーの選出プロセス。

IPは同じであるため異なるインスタンス飼育係通信ポート番号が同じでないことを擬似クラスタ構成した場合、それで、それらが割り当てられた異なるポート番号を与えます。

各ZooKeeperのファイルで/dataディレクトリを作成しているmyidファイルは、MYIDファイルサーバだけで(例えば1、2、3など)の番号を持っています。

ZooKeeperのサービスは、(サービスを開始する3開いているウィンドウ)3を開始しました。

結果は以下の通りであります:

  • 飼育係-3.4.14

[root@instance-e5cf5719 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@instance-e5cf5719 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
  • 飼育係-3.4.14-1

[root@instance-e5cf5719 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-1/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@instance-e5cf5719 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-1/bin/../conf/zoo.cfg
Mode: leader
  • 飼育係-3.4.14-2

[root@instance-e5cf5719 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-2/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@instance-e5cf5719 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-2/bin/../conf/zoo.cfg
Mode: follower

私たちは、ステータスのZooKeeper-3.4.14-1市を見て、見ることができleader、飼育係-3.4.14と飼育係-3.4.14-2市follower

あなたは、理解を支援するために公式サイトのアーキテクチャの図を参照することができます。

ここに画像を挿入説明

飼育係-3.4.14-1は、次のリーダーの再選を観察するために停止しました。

[root@instance-e5cf5719 bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-1/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

それぞれ、飼育係-3.4.14ステータスを表示し、飼育係-3.4.14-2。

[root@instance-e5cf5719 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
[root@instance-e5cf5719 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/zookeeper-3.4.14-2/bin/../conf/zoo.cfg
Mode: leader

私たちは、飼育係-3.4.14-2がリーダーになる見ることができます。

3クラスタモデルの構築

擬似クラスタで構築されたクラスタモデルは非常に似ているが、ZooKeeperのクラスタは異なるマシンに配備され、なぜなら、異なるマシン(IP擬似ZooKeeperのクラスタは、/conf/zoo.cfgを変更することと、同じマシン上に展開されています異なる)、ポート番号を変更することはできません。別にこの違いから、他のセットアップ疑似クラスタとまったく同じ方法で、より導入しません。

4まとめ

ここまでは、ZooKeeperのスタンドアローン版、擬似クラスタ環境を構築するために完了しました。高可用性のZooKeeperを確保するため、本番環境では、クラスタ環境をセットアップしてください。

     

    おすすめ

    転載: www.cnblogs.com/AllIhave/p/12048026.html