一、启动zk服务
其实就是启动了zookeeper服务端,只是开启了zookeeper一个节点,后面会介绍如何开启服务端多个节点
zkServer.sh start
二、启动完了之后,就可以通过客户端查看服务端的节点情况
1、启动zookeeper客户端 zkCli.sh
2、退出客户端:quit
3、查看当前服务端树形情况:ls -R /
客户端在服务端创建永久节点:create /app1
创建临时节点:create -e /lock
监听lock节点的状态:stat -w /lock
如果节点过期,会受到一个watchedEvent事件
三、使用zookeeper实现分布式锁:
原理:客户端1创建临时节点A,接着客户端2创建临时节点A,此时客户端2创建失败,客户端2监听节点A,等待释放,如果释放客户端2就会收到通知,然后客户端2在创建临时节点A,成功。
四、zookeeper实现master-worker
1、先创建 /workers节点(永久节点):create /workers
2、在创建master临时节点:create -e /master "m1:2223"
—m1表示znode的值,2223表示端口号
3、master创建成功后,在监听/workers节点下面的变化:ls -w /workers
4、创建临时worker节点1:create -e /workers/w1 'w1:2224'
4、创建临时worker节点2:create -e /workers/w2 'w2:2224'
五、配置3个节点的zookeeper集群:
第一步:首先准备三个配置文件、每次启动指定配置文件,那么就会启动三个zookeeper节点。这个配置可以从conf目录下面copy文件zook.cfg。修改一下配置,大致内容如下
![](https://img-blog.csdnimg.cn/54f27f0b837b432bbc52a4eeb565b850.png)
比如下图在quorum目录下面放置三个cfg文件
![](https://img-blog.csdnimg.cn/d95e04ec64ce43dc85b57ee7e4a21fc9.png)
第二步:配置myid文件
dataDir=/Users/leileijiang/IdeaProjects/zookeeper/temp/zook1
前面我们配置了数据存放的路径,但是前提是我们要在这个目录下面放置myid文件
怎么放置myid文件呢,myid文件存什么内容呢
可以分别进入到zook1、zook2、zook3目录下面执行下面命令
echo "1" > myid
就会在zook1目录下面生成文件和设置内容,当如zook2目标下面要执行:echo "2" > myid
同理zook3目录下面执行:echo "3" > myid
第三步:上面配置文件都弄好了之后,开始启动三个zookeeper服务端的节点
进入配置文件所在目标执行:zkServer.sh start-foreground ./zoo-quorum-node1.cfg
启动第一个zookeeper节点,分别启动三个节点
启动日志:查看被选为leader的节点
节点1:FOLLOWING - LEADER ELECTION TOOK - 208542 MS
节点2:LEADING - LEADER ELECTION TOOK - 229 MS
节点3:FOLLOWING - LEADER ELECTION TOOK - 20 MS
节点2的日志:LEADING表示节点2成了leader节点
节点1和节点3的日志:FOLLOWING 表示成了follower节点
4、第四步:开启一个zookeeper客户端,执行:zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
表示客户端接入zookeeper服务的端口和每个节点的配置。
客户端启动日志:
Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x100027c85860000, negotiated timeout = 30000
表示和2181建立了连接
断开2181节点,此时客户端又会重行连接zookeeper服务节点
Session establishment complete on server localhost/127.0.0.1:2182, session id = 0x200027c85970000, negotiated timeout = 30000
表示和2182建立了连接
![](https://img-blog.csdnimg.cn/7768b0a4e2024df18de50f1a2a83d2ef.png)