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
相关文章
相关标签/搜索