Zookeeper 簡單入門

目錄


文章聲明html

zookeeper介紹node

zookeeper的使用場景數據庫

統一命名服務apache

配置管理ubuntu

集羣管理bash

共享鎖服務器

隊列分佈式

安裝zookeeperui

配置zookeeperspa

zookeeper的運行狀態管理

使用zookeeper客戶端登陸到服務器

zookeeper中經常使用的操做命令

 

 

 

 

 


 

 

 

 

文章聲明

  本文的內容主要來自Zookeeper官方文檔:https://zookeeper.apache.org/doc/r3.4.14/index.html

  

 

Zookeeper介紹

  官方手冊有一句話對Zookeeper的描述很精確,ZooKeeper:分佈式應用程序的分佈式協調服務

  ZooKeeper容許分佈式進程經過共享的層級命名空間相互協調,該命名空間的組織方式與Linux文件系統相似,好比Linux中存在/usr/local/test這個路徑,Zookeeper的思想就是爲一個路徑賦值,好比/usr/local/test的值爲‘xxxxx',分佈式應用進程能夠在Zookeeer中建立路徑、爲路徑賦值、讀取路徑值,刪除路徑,經過這些操做來實現分佈式服務的協調。    

  上圖中的每個節點被稱爲一個znode,每一個znode都有本身的相關屬性(包括賦予其的value),而且每一個節點均可以建立本身的子項。

  Zookeeper中節點有兩種,一種就是上圖中的每個路徑中的節點;另一種是Zookeeper集羣中,每個Zookeeper服務器也被稱爲節點。

  

 

Zookeeper的使用場景

  Zookeeper雖然是對分佈式應用程序的協調服務,那麼能夠先看一下zookeeper是如何實現協調的,有哪些協調的案例。

統一命名服務

 

 

配置管理

 

 

集羣管理

 

 

共享鎖

 

 

隊列

 

安裝Zookeeper

  其實Zookeeper的安裝特別簡單,也不能算安裝了,只須要將Zookeeper下載後解壓,就完成了安裝操做,可是還須要進行一些配置操做。

  下載地址:http://zookeeper.apache.org/releases.html

  本文所用的3.4.14版本,下載連接  

su - root  # 請務必切換爲root身份
wget http://www.trieuvan.com/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxf zookeeper-3.4.14.tar.gz
cp -r zookeeper-3.4.14 /usr/local/zookeeper

# 建立存放數據文件的目錄
mkdir /usr/local/zookeeper/data

  此時,Zookeeper就安裝成功了,只不過還須要進行一些配置才能啓動。

 

 

配置Zookeeper

  Zookeeper的配置文件在path-to-zookeeper/conf目錄下,文件名爲zoo.cfg。初始安裝的Zookeeper有一個zoo_sample.cfg示例文件,能夠拷貝一份,在進行修改。

root@ubuntu:/usr/local/zookeeper# cd conf/
root@ubuntu:/usr/local/zookeeper/conf# ls
configuration.xsl  log4j.properties  zoo_sample.cfg
root@ubuntu:/usr/local/zookeeper/conf# cp zoo_sample.cfg zoo.cfg
root@ubuntu:/usr/local/zookeeper/conf# ls
configuration.xsl  log4j.properties  zoo.cfg  zoo_sample.cfg

  修改zoo.cfg中的下面三項:

# 心跳間隔(毫秒),超過2倍tickTime將會被認爲會話超時
tickTime=2000

# 保存zookeeper數據庫快照的目錄,前面安裝zookeeper時已經建立了該目錄
dataDir=/usr/local/zookeeper/data

# 監聽的端口號,用於接收客戶端請求
clientPort=2181

  

 

Zookeeper的運行狀態管理

  Zookeeper中可執行文件都存放在zookeeper安裝路徑下的bin目錄下,而對Zookeeper服務器運行狀態管理,使用的是zkServer.sh這個腳本。

  經過傳入start | stop | restart | status來管理Zookeeper服務器的運行狀態。

/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/zookeeper/bin/zkServer.sh restart
/usr/local/zookeeper/bin/zkServer.sh stop
/usr/local/zookeeper/bin/zkServer.sh status

  

 

使用Zookeeper客戶端登陸服務器

  經過命令行的方式登陸到Zookeeper服務器,可使用Zookeeper提供的zkCli.sh腳本,位於/usr/local/zookeeper/bin目錄下。

/usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

  登陸進入Zookeeper服務器後,就能夠進行不少操做了,下面將一一列舉。

 

 

Zookeeper中經常使用操做命令

  登陸到zookeeper服務器後,輸入任意字符,回車確認後就會出現不少命令:

[zk: 127.0.0.1:2181(CONNECTED) 0] info
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

  其實上面的命令列表已經很明顯的展現了zookeeper中能夠操做的命令,包括他的功能都比較容易理解,下面就簡單說幾個經常使用的命令

 

ls path

  查看path節點下有哪些子節點,不會顯示孫子及如下層級的節點,示例以下:

[zk: 127.0.0.1:2181(CONNECTED) 3] ls /       
[zookeeper]

  

create path data

  該命令用來建立path節點,而且設置節點的值爲data。須要注意的是,使用create建立path時,不能嵌套建立path,好比建立/abc/xyz,那麼/abc必須是已經存在的,不能直接建立/abc/xyz。而且,使用create建立節點的時候,必須指定data,不然節點不會被建立。

[zk: 127.0.0.1:2181(CONNECTED) 4] create /abc xxxxxx
Created /abc
[zk: 127.0.0.1:2181(CONNECTED) 5] ls /
[abc, zookeeper]

  嵌套建立path時,若是上級目錄不存在,則建立失敗:

[zk: 127.0.0.1:2181(CONNECTED) 5] ls /
[abc, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 6] create /xyz/aaa 12345
Node does not exist: /xyz/aaa
[zk: 127.0.0.1:2181(CONNECTED) 7] create /xyz 123
Created /xyz
[zk: 127.0.0.1:2181(CONNECTED) 8] create /xyz/aaa 12345
Created /xyz/aaa

 

get path

  該命令用來查看path節點上值以及節點信息,示例以下:

[zk: 127.0.0.1:2181(CONNECTED) 12] get /xyz
123
cZxid = 0x1f
ctime = Sun Jun 09 15:12:07 CST 2019
mZxid = 0x1f
mtime = Sun Jun 09 15:12:07 CST 2019
pZxid = 0x20
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1

  

set path data

  該命令用來對已經存在的path的data進行設置,須要注意的是,若是path不存在,那麼set操做就會失敗,示例以下:

[zk: 127.0.0.1:2181(CONNECTED) 13] set /xyz 321
cZxid = 0x1f
ctime = Sun Jun 09 15:12:07 CST 2019
mZxid = 0x22
mtime = Sun Jun 09 15:15:18 CST 2019
pZxid = 0x20
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1
[zk: 127.0.0.1:2181(CONNECTED) 14] set /www notExists   # path不存在,操做失敗
Node does not exist: /www

  

delete path

  該命令用來刪除葉子節點,葉子節點就是沒有子節點的節點。若是刪除path下面還有其餘的子節點,那麼刪除操做就會失敗。

[zk: 127.0.0.1:2181(CONNECTED) 19] ls /       
[xyz, abc, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 20] ls /xyz    
[aaa]
[zk: 127.0.0.1:2181(CONNECTED) 21] ls /xyz/aaa
[]
[zk: 127.0.0.1:2181(CONNECTED) 22] delete /xyz  # 刪除的path包含子節點,刪除失敗
Node not empty: /xyz
[zk: 127.0.0.1:2181(CONNECTED) 23] delete /xyz/aaa # 刪除的節點沒有子節點,刪除成功

  

rmr path

  該命令用來遞歸刪除path,若是path下面有子節點,那麼子節點都會被所有刪除。

[zk: 127.0.0.1:2181(CONNECTED) 24] ls /xyz
[]
[zk: 127.0.0.1:2181(CONNECTED) 25] create /xyz/abc 3333
Created /xyz/abc
[zk: 127.0.0.1:2181(CONNECTED) 26] rmr /xyz

  

stat path

  用來獲取path節點的相關信息,示例以下:

[zk: 127.0.0.1:2181(CONNECTED) 29] stat /abc
cZxid = 0x1d
ctime = Sun Jun 09 15:10:39 CST 2019
mZxid = 0x21
mtime = Sun Jun 09 15:13:30 CST 2019
pZxid = 0x1d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
相關文章
相關標籤/搜索