Zookeeper介绍 Zookeeper 分布式服务框架是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文主要从使用者角度来介绍一下Zookeeper的安装,配置及应用。
单机模式
Zookeeper可以单机安装,这种应用模式主要用在测试或demo的情况下,在生产环境下一般不会采用。
1. 首先可以从Zookeeper的官方网站下载最新的安装包http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
2. 解压zookeeper到指定目录下,这里假定为/opt/zookeeper
3. 进入zookeeper目录下的conf目录,复制zoo_sample.cfg为zoo.cfg,并将内容修改如下
tickTime=2000 dataDir=/opt/zookeeper-3.4.6/data clientPort=2181
tickTime:Zookeeper 服务器之间或客户端与服务器之间心跳的时间间隔。
dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:Zookeeper 服务器监听端口,用来接受客户端的访问请求。
4. 配置完以后,就可以启动zookeeper服务了,进入Zookeeper/bin目录,运行下面的命令来启动Zookeeper服务
$ ./zkServer.sh start JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
启动后可以使用下面的命令查看服务状态
$ ./zkServer.sh status JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: standalone
5. 在Zookeeper服务器启动以后,就可以使用Zookeeper的客户端来连接并测试了。
$ ./zkCli.sh
或
$ ./zkCli.sh -server 127.0.0.1:2181
连接之后可以时候help来查看有哪些命令可以使用
[zk: 127.0.0.1:2181(CONNECTED) 0] ls / #查看根节点 [zookeeper] [zk: 127.0.0.1:2181(CONNECTED) 1] create /mykey1 myvalue1 #创建一个新节点mykey1 Created /mykey1 [zk: 127.0.0.1:2181(CONNECTED) 2] create /mykey2 myvalue2 #创建一个新节点mykey2 Created /mykey2 [zk: 127.0.0.1:2181(CONNECTED) 13] ls / #查看根节点 [mykey1, mykey2, zookeeper] [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey1 #获取mykey1节点 myvalue1 cZxid = 0x6 ctime = Sat Sep 20 21:00:17 CST 2014 mZxid = 0x8 mtime = Sat Sep 20 21:01:06 CST 2014 pZxid = 0x6 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: 127.0.0.1:2181(CONNECTED) 23] get /mykey2 #获取mykey2节点 myvalue2 cZxid = 0x6 ctime = Sat Sep 20 21:00:17 CST 2014 mZxid = 0x8 mtime = Sat Sep 20 21:01:06 CST 2014 pZxid = 0x6 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: 127.0.0.1:2181(CONNECTED) 24] set /mykey1 myvalue11 #设置mykey1节点的值 [zk: 127.0.0.1:2181(CONNECTED) 25] set /mykey2 myvalue22 #设置mykey2节点的值 [zk: 127.0.0.1:2181(CONNECTED) 26] set /mykey1 #删除mykey1节点 [zk: 127.0.0.1:2181(CONNECTED) 27] set /mykey2 #删除mykey2节点