highly reliable distributed coordination,用來作高可靠的分佈式協調者,可用來:git
[root@c7bit1 conf]# cat zk2181.conf dataDir=/data/zookeeper/data2181 clientPort=2181 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2182.conf dataDir=/data/zookeeper/data2182 clientPort=2182 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2183.conf dataDir=/data/zookeeper/data2183 clientPort=2183 tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:2820:3820 server.2=127.0.0.1:2830:3830 server.3=127.0.0.1:2840:3840
5.配置參數介紹github
dataDir:Zookeeper 保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏shell
clientPort:這個端口就是客戶端鏈接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。json
tickTime: Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。bash
initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶鏈接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中鏈接到 Leader 的 Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 5*2000=10 秒服務器
syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 秒分佈式
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,須要一個端口來從新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通訊的端口。若是是僞集羣的配置方式,因爲 B 都是同樣,因此不一樣的 Zookeeper 實例通訊端口號不能同樣,因此要給它們分配不一樣的端口號。ui
除了修改 zoo.cfg 配置文件,集羣模式下還要配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件裏面就有一個數據就是 A 的值,Zookeeper 啓動時會讀取這個文件,拿到裏面的數據與 zoo.cfg 裏面的配置信息比較從而判斷究竟是那個 server。debug
6.啓動zk日誌
[root@c7bit1 bin]# cd /usr/local/zookeeper/bin/ [root@c7bit1 bin]# ./zkServer.sh start /data/zookeeper/conf/zk2181.conf ZooKeeper JMX enabled by default Using config: /data/zookeeper/conf/zk2181.conf Starting zookeeper ... STARTED 同理啓動另外兩個節點: ./zkServer.sh start /data/zookeeper/conf/zk2182.conf ./zkServer.sh start /data/zookeeper/conf/zk2183.conf
7.基本命令使用
ZooKeeper -server host:port cmd args 如: ./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 ls / 固然也能夠只聯接單個server,如: ./zkCli.sh -server 127.0.0.1:2181 後面若是不加命令,則進入交互模式。 [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 建立一個新節點 [zk: 127.0.0.1:2181(CONNECTED) 20] create /name "abc" Created /name 列出節點 [zk: 127.0.0.1:2181(CONNECTED) 23] ls / [name, zookeeper] 獲取一個節點的值 [zk: 127.0.0.1:2181(CONNECTED) 21] get /name abc cZxid = 0x60000001c ctime = Thu Nov 29 21:33:31 CST 2018 mZxid = 0x60000001c mtime = Thu Nov 29 21:33:31 CST 2018 pZxid = 0x60000001c cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 設置節點的值 [zk: 127.0.0.1:2181(CONNECTED) 24] set /name '123' cZxid = 0x60000001c ctime = Thu Nov 29 21:33:31 CST 2018 mZxid = 0x60000001d mtime = Thu Nov 29 21:34:51 CST 2018 pZxid = 0x60000001c cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 3 numChildren = 0 刪除節點 [zk: 127.0.0.1:2181(CONNECTED) 26] delete /name [zk: 127.0.0.1:2181(CONNECTED) 27] ls / [zookeeper]
若是是遠程shell操做,能夠下載zookeepercli-1.0.10-1.x86_64.rpm
下載地址:https://github.com/outbrain/zookeepercli
使用和上面的基本一致
[root@c7bit1 conf]# rpm -ivh zookeepercli-1.0.10-1.x86_64.rpm [root@c7bit1 conf]# zookeepercli --help Usage of zookeepercli: -acls="31": optional, csv list [1|,2|,4|,8|,16|,31] -auth_pwd="": optional, digest scheme, pwd -auth_usr="": optional, digest scheme, user -c="": command, required (exists|get|ls|lsr|create|creater|set|delete|rm|deleter|rmr|getacl|setacl) -debug=false: debug mode (very verbose) -force=false: force operation -format="txt": output format (txt|json) -servers="": srv1[:port1][,srv2[:port2]...] -stack=false: add stack trace upon error -verbose=false: verbose [root@c7bit1 bin]# zookeepercli -servers 127.0.0.1:2181 -c ls / zookeeper