zookeeper 安装

来源:互联网 发布:网络创世纪uo服务端 编辑:程序博客网 时间:2024/04/25 19:37

一.zookeeper简介

    百度百科的介绍,zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交proposer,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。

二.如何理解zookeeper

    zookeeper翻译成中文是"动物园管理员”,名字和他的功能十分相似,大家都去过动物园。动物园里有许多动物,游客可以通过动物园的提供的导航图到不同的馆参观各种类型的动物,比如大象馆、蟒蛇馆、熊猫馆等。而不是像走在原始森林丛林中一样,面对各种动物,惊胆颤的被动物所观赏。为了让不同的动物呆在他们应该呆的地方,而不是相互串门,相互厮杀。动物园需要选举出动物管理员,然后动物管理员按照动物的种类和动物的习性进行分类管理。把动物分配到不同的馆,然后提供动物园导航图给游客。这样游客才可以安心观赏动物。
  回到我们企业的实际应用中。随着企业业务的不断增加,我们的企业级系统变得越来越庞大臃肿,性能急剧下降,客户抱怨频频。这时把臃肿的系统按照不同的业务拆分是目前目前我们可以解决系统的可扩展性、高可用性、和性能问题唯一行之有效的方法。但是拆分系统同时也带来了系统的复杂性。各子系统之间不是孤立的,而是彼此直接相互协作和交互。其实这就是我们说的分布式系统。如淘宝的一次购物体验不是一个系统全部完成的。而是多个系统协同合作,下单的动作需要用户系统的参与、支付需要支付宝参与、发货需要菜鸟网络参与等。各个系统好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进行协调——这就是ZooKeeper“动物园管理员”。

三.ZooKeeper之特性

ZooKeeper本质上是一个分布式的小文件存储系统。原本是Apache Hadoop的一个组件,现在被拆分为一个Hadoop的独立子项目,在HBase(Hadoop的另外一个被拆分出来的子项目,用于分布式环境下的超大数据量的DBMS)中也用到了ZooKeeper集群。ZooKeeper有如下的特性:

1.简单

ZooKeeper核心是一个精简的文件系统,它提供了一些简单的文件操作以及附加的功能,例如排序和通知。

2.易表达

ZooKeeper的数据结构原型是一棵znode树(类似Linux的文件系统),并且它们是一些已经被构建好的块,可以用来构建大型的协作数据结构和协议。

3.高可用性

ZooKeeper可以运行在一组服务器上,同时它们被设计成高可用性,为你的应用程序避免单点故障。

4.松耦合交互

ZooKeeper提供的Watcher机制使得各客户端与服务器的交互变得松耦合,每个客户端无需知晓其他客户端的存在,就可以和其他客户端进行数据交互。

5.丰富的API

ZooKeeper为开发人员提供了一套丰富的API,减轻了开发人员编写通用协议的负担。


四.zookeeper安装

   环境:centos6.5、zookeeper-3.3.6.tar.gz
        集群:192.168.139.130   master
                  192.168.139.131  node1
                  192.168.139.132  node2

 第一步:从Apache网站上(zookeeper.apache.org)下载ZooKeeper软件包下载zookeeper-3.3.6.tar.gz

 第二步:创建zookeeper的安装目录  mkdir /usr/local/zookeeper

 第三步:解压缩到linux系统的安装目录下zookeeper-3.3.6.tar.gz

       tar –zxvf  zookeeper-3.3.6.tar.gz

第四步:创建zoo.cfg文件,在文件中输入配置信息

      cp simple_zoo.cfg zoo.cfg

zoo.cfg的内容为:

tickTime=2000
       initLimit=10
      syncLimit=5
      clientPort=2181
     dataDir=/usr/local/zookepper/data
     server.1=192.168.139.130:2888:3888
     server.2=192.168.139.131:2888:3888
     server.3=192.168.139.132:2888:3888

 

说明:

clientPort监听客户端连接的端口;

dataDir 存储内存中数据库快照的位置;

注意 应该谨慎地选择日志存放的位置,使用专用的日志存储设备能够大大地提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。

tickTime 基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的tickTime 。


第五步:远程zookeeper到另外两位两服务器安装zookeeper的目录下

   scp -r zookeeper-3.3.6/ root@node1:/usr/local/zookeeper/  

  第六步:在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,
     第七步:启动zookeeper集群
         在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本。
         bin/zkServer.sh start 
     启动顺序是master、node1、node2
      tail -500f zookeeper.out
     启动master后的日子因为启动masterzookeeper会尝试去连接两位两台服务器,所有保存

     启动起两台服务器后

   这就表明集群启动成功

  第七步:安装验证
       可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
master:
[root@master zookeeper-3.3.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: leader
node1:
[root@node1 zookeeper-3.3.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
node2:
 [root@node2 zookeeper-3.3.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
     
以通过客户端脚本,连接到ZooKeeper集群上。对于客户端来说,ZooKeeper是一个整体(ensemble),连接到ZooKeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接如图:
 

整个集群安装成功

0 0
原创粉丝点击