● zookeeper概述
ZooKeeper::分佈式協調工具,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。
● zookeeper特點
● zookeeper數據結構
● zookeeper的應用場景
提供的服務包括:統一命名服務、統一配置管理、統一集羣管理、服務器節點動態上下線、軟負載均衡等
統一命名服務
統一配置管理
統一集羣管理
服務器動態上下線
軟負載均衡
● zookeeper下載
----
----
----
----
----
● zookeeper安裝
一:上傳到/usr/local/soft/目錄下、解壓、重命名
# tar -zxvf zookeeper-3.4.14.tar.gz --解壓
# mv zookeeper-3.4.14 zookeeper --重命名
二:新建ZK的數據目錄和日誌目錄
# cd zookeeper --進入ZK目錄
# mkdir data --新建數據目錄
# mkdir log --新建日誌目錄
三:修改ZK配置文件
# cd conf/ --進入配置文件目錄
# cp zoo_sample.cfg zoo.cfg --複製一份,ZK默認加載的配置文件名:zoo.cfg
# vim zoo.cfg --編輯配置文件
dataDIr、clientPort配置文件中已經指定,修改即可,dataLogDir需要添加列
dataDir=/usr/local/soft/zookeeper/data
dataLogDir=/usr/local/soft/zookeeper/log
clientPort=2181
● zookeeper啓動、連接
一:啓動
# cd bin --進入bin目錄
# ./zkServer.sh start --啓動zookeeper
./zkServer.sh { start | start-foreground | stop | restart | status | upgrade } --其他用法
二:查看狀態
# ./zkServer.sh status 或者 jps
三:連接
./zkCli.sh -server 127.0.0.1:2181 --連接服務,指定ip、端口
● zoo.cfg文件詳解
1.tickTime =2000:通信心跳數,Zookeeper服務器與客戶端心跳時間,單位毫秒
Zookeeper使用的基本時間,服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個tickTime時間就會發送一個心跳,時間單位爲毫秒。
它用於心跳機制,並且設置最小的session超時時間爲兩倍心跳時間。(session的最小超時時間是2*tickTime)
2.initLimit =10:LF初始通信時限
集羣中的Follower跟隨者服務器與Leader領導者服務器之間初始連接時能容忍的最多心跳數(tickTime的數量),用它來限定集羣中的Zookeeper服務器連接到Leader的時限。
3.syncLimit =5:LF同步通信時限
集羣中Leader與Follower之間的最大響應時間單位,假如響應超過syncLimit * tickTime,Leader認爲Follwer死掉,從服務器列表中刪除Follwer。
4.dataDir:數據文件目錄+數據持久化路徑
主要用於保存Zookeeper中的數據。
5.clientPort =2181:客戶端連接端口
監聽客戶端連接的端口。
● zookeeper命令詳解
help命令
help命令用於查詢客服端所支持的所用的命令,執行help,輸入如下:
[zk: 127.0.0.1:2181(CONNECTED) 2] 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
ls命令
ls命令用於獲取路徑下的節點信息,注意路徑爲絕對路徑,如:ls /
ls2命令
ls2命令是ls命令的增強版,比ls命令多輸出本節點信息
create命令 create [-s] [-e] path data acl
create命令用於創建節點,其中-s爲順序節點,-e臨時節點
create /node1 'i am a node1'
delete命令
delete命令用於刪除節點,如delete /nodeDelete
get命令
get命令用於獲取節點的信息,注意節點的路徑必須是以/開頭的絕對路徑。如get /node1
set命令
set命令用於設置節點的數據,如:set /node1 "i am 1"
addauth命令
addauth命令用於節點認證,使用方式:如addauth digest username:password
setAcl命令
setAcl命令用於設置節點Acl
Acl由三部分構成:1爲scheme,2爲user,3爲permission,一般情況下表示爲scheme:id:permissions
getAcl命令
獲取節點的Acl,如getAcl /node1
world: 它下面只有一個id, 叫anyone, world:anyone代表任何人,zookeeper中對所有人有權限的結點就是屬於world:anyone的
auth: 它不需要id, 只要是通過authentication的user都有權限(zookeeper支持通過kerberos來進行authencation, 也支持username/password形式的authentication)
digest: 它對應的id爲username:BASE64(SHA1(password)),它需要先通過username:password形式的authentication
ip: 它對應的id爲客戶機的IP地址,設置的時候可以設置一個ip段,比如ip:192.168.1.0/16, 表示匹配前16個bit的IP段
super: 在這種scheme情況下,對應的id擁有超級權限,可以做任何事情(cdrwa)
permissions
CREATE(c): 創建權限,可以在在當前node下創建child node
DELETE(d): 刪除權限,可以刪除當前的node
READ(r): 讀權限,可以獲取當前node的數據,可以list當前node所有的child nodes
WRITE(w): 寫權限,可以向當前node寫數據
ADMIN(a): 管理權限,可以設置當前node的permission
stat命令
stat命令用於查看節點的狀態信息,如stat /
history命令
history用於列出最近的命令歷史,可以和redo配合使用。如history
redo命令
redo命令用於再次執行某個命令,使用方式爲redo cmdid 如 redo 20
常與history配合使用
connect命令
連接zk服務端,與close命令配合使用可以連接或者斷開zk服務端
connect 127.0.0.1:2181
close命令
close命令用於關閉與服務端的鏈接
quit命令
退出客戶端
listquota命令
listquota命令用於顯示配額,如listquota /storm
absolute path is /zookeeper/quota/storm/zookeeper_limits
quota for /storm does not exist.
setquota命令
setquota命令用於設置節點個數以及數據長度的配額,如:
1 2 |
|
delquota命令
delquota命令用於刪除配額,-n爲子節點個數,-b爲節點數據長度,如:delquota –n 2
sync命令
sync命令用於強制同步,由於請求在半數以上的zk server上生效就表示此請求生效,那麼就會有一些zk server上的數據是舊的。sync命令就是強制同步所有的更新操作。
printwatchers命令
printWatchers命令用於設置和顯示監視狀態,值爲on或則off
下一篇:搭建zookeeper集羣:https://blog.csdn.net/qq_37936542/article/details/107096985