欢迎来到分布式管中窥豹之zookeeper小白学习系列,本系列会记录zookeeper以及分布式系统学习过程中的一些操作和细节,大饼果子非科班出身,如有错误,欢迎指出
zookeeper的服务端有两种运行模式,独立模式standalone(一个节点跑)和仲裁模式quorum(很多节点跑,并且互相有通信)
本篇我们将启动独立模式,并用客户端对其进行连接
准备工作
1. 到Apache的网站上下载zookeeper
http://zookeeper.apache.org/releases.html
2. 进行解压
tar -xvzf zookeeper-3.4.12.tar.gz
cd zookeeper-3.4.14
我们可以看到目录里的文件
LICENSE.txt build.xml ivy.xml zookeeper-3.4.12.jar NOTICE.txt conf ivysettings.xml zookeeper-3.4.12.jar.asc README.md contrib lib zookeeper-3.4.12.jar.md5 README_packaging.txt dist-maven recipes zookeeper-3.4.12.jar.sha1 bin docs src
启动和连接的脚本在bin里面,配置文件在conf里面
3. 进行简单的配置修改
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
我们可以看到官方不推荐dataDir到/tmp路径下,将其修改到用户管理的文件下
然后执行
./bin/zkServer.sh start conf/zoo.cfg
我们可以看到如下
ZooKeeper JMX enabled by default Using config: conf/zoo.cfg Starting zookeeper ... STARTED
在当前路径下有zookeeper的log,zookeeper.out,我们可以打开这个文件
2019-01-25 11:39:52,418 [myid:] - INFO [main:ZooKeeperServer@835] - tickTime set to 2000 2019-01-25 11:39:52,418 [myid:] - INFO [main:ZooKeeperServer@844] - minSessionTimeout set to -1 2019-01-25 11:39:52,418 [myid:] - INFO [main:ZooKeeperServer@853] - maxSessionTimeout set to -1 2019-01-25 11:39:52,435 [myid:] - INFO [main:ServerCnxnFactory@117] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory 2019-01-25 11:39:52,446 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
看到成功绑定了端口,说明我们启动成功了
4. 我们来使用客户端连接一下
./bin/zkCli.sh
我们可以看到
2019-01-25 11:46:32,460 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@878] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session JLine support is enabled 2019-01-25 11:46:32,505 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10029e69df40000, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0]
进到了zookeeper的客户端,说明我们已经成功的使用客户端连接了服务端
5. 我们可以查看一下help
[zk: localhost: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
help展示了zookeeper的很多命令,这些在以后用到的时候再去分析,或者读者可以自行尝试,比如 ls / 可以去查看路径下的文件信息(znode)
至此,我们已经成功搭建了zookeeper的独立模式,当然这只是第一步,相信独立模式是不会被用在生产环境的,但已经足够方便让我们去学习zookeeper的结构和使用方法了
仲裁模式与分布式的一致性算法会在很后面的章节一起学习
服务端的其他两个命令
$ ./bin/zkServer.sh status conf/zoo.cfg ZooKeeper JMX enabled by default Using config: conf/zoo.cfg Mode: standalone
$ ./bin/zkServer.sh stop conf/zoo.cfg ZooKeeper JMX enabled by default Using config: conf/zoo.cfg Stopping zookeeper ... STOPPED
分别可以查看状态和关闭zookeeper服务,可以看到我们是standalone的没错哟
管中窥豹,可见一斑
下一篇,zookeeper的文件存储结构