简介:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper的集群:
下图是一个ZK集群的实例,该Zookeeper集群当中一共有5台服务器,有两种角色Leader和Follower,5台服务器连通在一起,客户端分别连在不同的ZK服务器上。如果当数据通过客户端1,在左边第一台Follower服务器上做了一次数量变更,它会把这个数据的变化同步到其他所有的服务器,同步结束之后,其他的客户端都会获得这个数据的变化。
通常ZooKeeper集群当中,集群中的服务器角色有两种Leader和Learner,Learner角色又分为Observer和Follwer。
leader(领导者):
负责进行投票的发起和决议,更新系统状态。
learner(学习者):
包括follower(跟随者)和observer(观察者)。follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票。Observer可以接受客户端请求,将写请求转发给leader,但observer不参与投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
client(客户端):请求发起方。
zookeeper集群搭建:
这次用一个虚拟机,在里面搭建zookeeper三个实例。
第一步:
把zookeeper的安装包上传到服务器。
第二步:
把zookeeper解压 tar -zxf zookeeper-3.4.6.tar.gz
第三步:
把zookeeper向/usr/local/solr-cloud目录下赋值三份。
第四步:
配置zookeeper。
1、在zookeeper01目录下创建一个data文件夹
2、在data目录下创建一个myi的文件
3、myid的内容为1
4、zookeeper02和zookeeper03也做相同的操作,02对应的myid内容为2,03中对应的myid内容为3。
5、进入conf文件夹(/usr/local/solr-cloud/zookeeper01/conf/),把zoo_sample.cfg改名为zoo.cfg或将zoo_sample.cfg复制一份命名为zoo.cfg。(zookeeper02和zookeeper03中做同样的操作5~8)
这里用的是后者
6、修改zoo.cfg,使dataDir=属性制定为刚创建的data文件夹路径
7、修改zoo.cfg,把clientPort指定为不冲突的端口号。
8、在zoo.cfg最后添加3个server对应的内容,具体的ip要根据实际的ip做修改。
(6-8的修改对应下图)
注:zookeeper02中zoo.cfg文件修改参考:
zookeeper03中zoo.cfg文件修改参考:
第五步:启动zookeeper、查看状态、关闭
zookeeper的bin目录了下,使用./zkServer.sh start启动zookeeper服务。./zkServer.sh status查看zk服务的状态,这时候可以通过显示信息中的Mode查看zk在zk集群中的角色。./zkServer.sh stop关闭zk服务。
总结:
对zk的学习从基础的开始接触,一步步的积累,这次通过集群的搭建有了新的认识,希望能给接触zk的读者带来帮助,小编的认识比较浅,有错误望指出。