ZooKeeper是用于维护配置信息,命名,提供分布式同步以及提供组服务的集中式服务.ZooKeeper底层实现是Java来实现的,所有需要Java环境.
环境搭建
Linux JDK搭建
这里采用的sftp的方式上传文件.
1 2 3
| sftp user@ip
put 物理机文件路径 虚拟机文件需要存储的路径
|
Linux ZooKeeper 搭建
下载路径
简单使用
ZooKeeper 有两个核心概念: 文件系统数据结构, 监听通知机制.
文件系统数据结构
在Zookeeper系统中,所有的节点都可以理解为是一个文件夹,所有访问任何一个节点都会带上一个 /.
文件节点类型
在v3.5之前只有四种节点类型, 在v3.5 之后增加了 容器节点和 TTL节点类型;
持久化节点 (默认)
持久化顺序节点 (-s)
临时节点 (-e)
临时顺序节点 (-e -s)
容器节点 (-c)
TTL 节点 (-t)
常用命令
系统提供的help 文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path history listquota path ls [-s] [-w] [-R] path ls2 path [watch] printwatches on|off quit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] rmr path set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path
|
监听通知机制
Zookeeper系统中, Zookeeper客户端可以监听任意节点,节点可以是单个节点(如果没有子节点),可以是目录节点(有子节点),也可以是一整个节点树;
不管是单个节点,还是整个节点树,Zookeeper都只是给节点注册一次监听,如果监听被触发,随后这个监听就会被移除,客户端如果想持续监听,就必须再次注册监听.
Zookeeper有如下这些个事件
监听单个节点
监听目录节点
监听整个节点树
树上每个节点的监听都只会被触发一次.相当于遍历执行了get -w /path
日志查看
Zookeeper 默认输出的数据存储在 /tmp/Zookeeper 目录,可以在启动Zookeeper的cfg配置.
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@oldconan ~]# cd /tmp/zookeeper/ [root@oldconan zookeeper]# ll 总用量 4 drwxr-xr-x. 2 root root 68 11月 16 14:41 version-2 -rw-r--r--. 1 root root 5 11月 16 14:40 zookeeper_server.pid [root@oldconan zookeeper]# cd version-2/ [root@oldconan version-2]# ll 总用量 28 -rw-r--r--. 1 root root 67108880 11月 16 14:35 log.1 -rw-r--r--. 1 root root 67108880 11月 16 15:25 log.6 -rw-r--r--. 1 root root 424 11月 16 14:13 snapshot.0 -rw-r--r--. 1 root root 643 11月 16 14:40 snapshot.5 [root@oldconan version-2]#
|
目录下面有两种文件,log文件, snapshot快照文件;
如果想查看这两个文件,我们需要用的Java类的支持;
log 文件查看的方式: 进入到Zookeeper的**/lib**目录下. 执行如下命令. 数据内容是ASCIIM码.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [root@oldconan lib]# java -classpath .:slf4j-api-1.7.25.jar:zookeeper-3.5.8.jar:zookeeper-jute-3.5.8.jar org.apache.zookeeper.server.LogFormatter /tmp/zookeeper/version-2/log.1 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ZooKeeper Transactional Log File with dbid 0 txnlog format version 2 20-11-16 下午02时21分37秒 session 0x1000b4e09350000 cxid 0x0 zxid 0x1 createSession 30000
20-11-16 下午02时23分41秒 session 0x1000b4e09350000 cxid 0x1 zxid 0x2 create '/default,#64656661756c7450617468,v{s{31,s{'world,'anyone}}},F,1
20-11-16 下午02时26分24秒 session 0x1000b4e09350000 cxid 0x5 zxid 0x3 create '/aaa,#61656565,v{s{31,s{'world,'anyone}}},T,2
20-11-16 下午02时28分51秒 session 0x1000b4e09350000 cxid 0xc zxid 0x4 create '/default/sub0,,v{s{31,s{'world,'anyone}}},F,1
20-11-16 下午02时35分36秒 session 0x1000b4e09350000 cxid 0x13 zxid 0x5 closeSession null EOF reached after 5 txns. [root@oldconan lib]#
|
snapshot快照文件查看的方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [root@oldconan lib]# java -classpath .:slf4j-api-1.7.25.jar:zookeeper-3.5.8.jar:zookeeper-jute-3.5.8.jar org.apache.zookeeper.server.SnapshotFormatter /tmp/zookeeper/version-2/snapshot.5 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ZNode Details (count=7): ---- / cZxid = 0x00000000000000 ctime = Thu Jan 01 08:00:00 CST 1970 mZxid = 0x00000000000000 mtime = Thu Jan 01 08:00:00 CST 1970 pZxid = 0x00000000000005 cversion = 2 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x00000000000000 dataLength = 0 ---- ...
|