構築するために、単一のクラスタ環境を飼育係

そのような分散ロックなどの分散システム、が直面する多くの問題、統一されたネーミングサービス、物流センターを飼育係、選挙のクラスタリーダーを管理します

環境の準備

飼育係は、このプロセスは、データが、ユニークな安全で信頼性があることを保証するために、通信システムのノード間で分散します

公式サイトをダウンロード

  • 設定ファイルを変更します。

/conf/zoo_sample.cfgはzoo.cfgに変更します

プロファイルの読書

# zookeeper  服务器和客户端之间维持心跳的时间间隔,即每个ticktime发送一个心跳包,单位是毫秒
# zookeeper 中session过期的时间是 ticktime*2
tickTime=2000
# Leader 允许Follower在initLimit时间内完成从Leader身上同步全部数据的工作, 随机集群的不断扩大,Follower从Leader上同步数据的时间就会变成,此时有必要,默认是0
initLimit=10
# Leader会和集群中的其他机器进行通信,在syncLimit时间内,都没有从Follower上获取返回数据,就认为这个节点挂了
syncLimit=5
# 存储快照文件的目录,默认情况下事务日志也在这里了,下面单独配置,因为因为日志的写性能影响zookeeper的性能
dataDir=E:\\zookeeper\\zookeeper-3.4.14\\data

dataLogDir=E:\\zookeeper\\zookeeper-3.4.14\\log
# 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
  • スタート

スクリプトは、/ bin /ディレクトリに起動する
Linuxのブート./zkCli.sh -server localhost:2181
****は、
クライアントコンソールに正常に開始しました

 # 默认的节点叫zookeeper
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
# 创建一个节点
[zk: localhost:2181(CONNECTED) 11] create /changwu1 "num1" 
Created /changwu1 
 # 重新查看
[zk: localhost:2181(CONNECTED) 14] ls /
[zookeeper, changwu1]
 # 获取节点的内容
[zk: localhost:2181(CONNECTED) 17] get /changwu1
num1
cZxid = 0x2
ctime = Mon Sep 16 15:56:27 CST 2019
mZxid = 0x2
mtime = Mon Sep 16 15:56:27 CST 2019
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

# 退出
quit

# 删除一个节点
[zk: localhost:2181(CONNECTED) 32] delete /changwu1
[zk: localhost:2181(CONNECTED) 33] ls /
[zookeeper]

# 递归删除节点
rmr /path1/path2
这个path1 和 path2 其实是两个节点
# 修改节点数据
set /path "value"

# 节点的状态
[zk: localhost:2181(CONNECTED) 50] stat /z1
cZxid = 0x5
ctime = Mon Sep 16 16:04:35 CST 2019
mZxid = 0x7
mtime = Mon Sep 16 16:06:31 CST 2019
pZxid = 0x6
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1

# 创建永久有序节点
create -s /path

フォームノードを作成し、我々はMKDIR、同様のディレクトリ構造を作成


クラスタのセットアップ

  • zoo.cfg 3つのコピー、およびコンフィギュレーションファイルを変更

リーダーとフォロワーの間でデータを同期するための第2ポート2887、新しいリーダーを選出するために使用される第3ポート

  • 6つのtmpディレクトリ内のディレクトリを作成し、それぞれzoo_data_1-3 zoo_logs_1-3です
  • ファイルMYIDを作成します。
[root@139 tmp]# echo 1 > zoo_data_1/myid
[root@139 tmp]# echo 2 > zoo_data_2/myid
[root@139 tmp]# echo 3 > zoo_data_3/myid

クラスタサーバーを起動します

[root@139 bin]# ./zkServer.sh start ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Starting zookeeper ... STARTED
[root@139 bin]# ./zkServer.sh start ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Starting zookeeper ... STARTED

それぞれ、各ノードのステータスを確認し、

[root@139 bin]# ./zkServer.sh status ../conf/zoo3.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo3.cfg
Mode: follower

[root@139 bin]# ./zkServer.sh status ../conf/zoo1.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo1.cfg
Mode: leader

[root@139 bin]# ./zkServer.sh status ../conf/zoo2.cfg 
ZooKeeper JMX enabled by default
Using config: ../conf/zoo2.cfg
Mode: follower
    

接続クライアント

./zkCli -server localhost:服务端的端口号

zkCli.sh -server localhost:2181
zkCli.sh -server localhost:2182
zkCli.sh -server localhost:2183

オブザーバーを追加します

  1. そして、最初の3のように、センチネルは、tmpディレクトリで使用されるディレクトリを作成することは、それぞれzoo_data_4 zoo_logs_4です
  2. それは4を書くzoo_data_4ディレクトリ内のファイルを作成するのMyID
  3. 最初の3ノード構成ファイルを変更します
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_1
dataLogDir=/tmp/zoo_logs_1

clientPort=2181

# 第一个端用于Leader和Leanner之间同步, 第二个端口,用户选举过程中的投票通信
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer
  1. 視聴者プロファイルを追加
tickTime=2000
initLimit=10
syncLimit=5

dataDir=/tmp/zoo_data_4
dataLogDir=/tmp/zoo_logs_4

# 观察者的配置
peerType=observer

clientPort=2184

# 第一个端用于Leader和Leanner之间同步, 第二个端口,用户选举过程中的投票通信
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
server.4=localhost:2890:3890:observer

クラスタの役割

盟主

ポーリングや解像度、最終ステータスが更新されました

フォロワー

リーダー主催の解像度に参加するために、クライアントの要求処理を受けます

観察者

バイトのリーダーに要求を転送、クライアント接続を受け入れる、それが投票に参加しませんが、唯一の状態のリーダーを同期するには、飼育係を拡大する方法です

?なぜこれがオブザーバーを追加しないと飼育係の仕事は密接に関連しています:

要求は、状態のZooKeeperを変更するための書き込み要求である場合は、しかし、複数の飼育係サーバクラスタは、要求を処理するために、各サーバは、クライアントの複数であってもよく、それは、読み出し要求、現在のサブサーバが直接存在に対応するローカルデータベースである場合、それが面倒になり、ポーリングする飼育係のリーダーノードこのメカニズムはZAB契約です。この操作を置く、ノードの半分以上の同意を得、メモリにロードされ、クライアントの返信

このプロセスでは、飼育係は、接続クライアントを受け入れるように、一方では、二つの機能を務め、彼らは解像度に投票を開始する必要が一方で、拡張飼育係を制限するために、これらの2つの関数は複数のクライアント接続をサポートしたいと思い、あなたはサーバーを追加する必要がありますしかし、より多くのサーバは、すべての時間は、世論調査では重くなるので、オブザーバーはされて入ってきました

投票段階で他のノードは、観察者がクライアントの接続、接続の転送リーダーを受信しながら、観察者は、投票に参加しないであろうが、それはまた、投票処理の結果を受け取る大幅システムのスループットを向上させます

スリム

リーダーと一緒にまとめてノードの同期状態、オブザーバーと総称リーンフォロワー

飼育係のCPA

CP:クラスタノードが唯一のリーダーフォロワを残り、リーダーがハングアップしたとき、あなたは選挙の再する必要があり、システムの選挙プロセスが使用できません

AP:リーダーフォロワーオブザーバーは、三つのグループ、APを達成するための組成に、リーダー、同じ選挙が、オブザーバーは、クライアントの要求を受け入れるように続けることができますが、データのオブザーバーは、最新のデータではないかもしれない時にハングアップ

おすすめ

転載: www.cnblogs.com/ZhuChangwu/p/11529117.html