之前有用过zookeeper,不过只限于配合其他中间件使用而已,最多就是简单的启动起来就完事,最近慢慢接触分布式计算的知识,发觉zookeeper作为一个分布式协调系统使用很广泛,很多中间件都会使用他,于是决定认真学习一下
首先是学习一下怎样运行zookeeper
1.到官网上下载zookeeper
http://zookeeper.apache.org/
2.解压zookeeper
等到下面的目录结构
3.以standalone模式启动zookeeper
3.1配置zookeeper
进入根目录下的conf文件夹,新建一个名为zoo.cfg的文件(直接从zoo_sample.cfg拷贝重命名)
然后在任意位置新建一个文件夹,用来存放zookeeper运行过程中产生的日志等信息,这里就在zookeeper的根目录下新建一个叫dataDir的文件夹
接下来编辑zoo.cfg配置文件,配置项基本不用改,就把其中的dataDir项的地址改为上面新建的文件夹的地址
配置就完成了
接下来启动zookeeper
进入根目录下的bin文件夹,执行命令 "./zkServer.sh start",就能启动zookeeper
然后利用zookeeper客户端来连接zookeeper服务
连接成功
通过在zookeeper里新建一个zootest节点,然后再删除来做一下实验
4 zookeeper集群部署
这里在同一台机器上运行3个zookeeper来模拟集群
4.1 zookeeper集群配置
首先对每每个zookeeper的配置做更改,拿zookeeper1为例,在配置文件中添加集群每台机的ip地址和端口
然后给每个zookeeper分配一个id,这里的id指的是上面server.x的x,例如server.1,那与127.0.0.1:2888:3888的那个zookeeper的id就是1
拿zookeeper1为例,我们进入dataDir目录,在目录下新建一个叫myid的文件,文件内容是1,如下图
其他zookeeper也做类似的配置
然后把集群运行起来
可以看到,zookeeper1被选为了leader,其他为follower
下面做个小实验来试验一下他们之间的同步性,我们随便选取一个zookeeper来连接,新建一个节点,然后再看看其他zookeeper上有没有同步新建那个节点
添加节点前:
在zookeeper2上添加一个节点:
可以看到,在zookeeper2上新建的节点,在zookeeper1和zookeeper3上都反映出来了