1. ZooKeeper是什么

ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件

1.1 ZooKeeper设计目标

  • 简单的数据结构:共享的树形结构,类似文件系统,存储于内存;

  • 可以构建集群:避免单点故障,3-5台机器就可以组成集群,超过半数正常工作就能对外提供服务;

  • 顺序访问:对于每个读请求,zk会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;

  • 高性能:基于内存操作,服务于非事务请求,适用于读操作为主的业务场景。3台zk集群能达到13w QPS;

1.2 ZooKeeper的使用场景

  • 数据发布订阅

  • 负载均衡

  • 命名服务

  • Master选举

  • 集群管理

  • 配置管理

  • 分布式队列

  • 分布式锁


2. ZooKeeper的安装部署

ZooKeeper安装部署方式分为三种

  1. 单机模式:在一台机器上部署

  2. 集群模式:在多台机器上部署,通过zoo.conf配置不同机器ZooKeeper之间的关联关系

  3. 伪集群模式:在一台机器上部署,复制多个ZooKeeper,在zoo.conf中配置这几个拷贝之间的关系

2.1 windows单机安装

  • 首先要安装jdk

  • 安装ZooKeeper,在官网http://zookeeper.apache.org/下载zookeeper,解压即可

  • 解压后目录

  • zoo.cfg中的dataDir配置Zookeeper工作中相关的data及log目录

2.2 集群配置(Linux环境)

  1. 安装jdk,配置环境变量【vi /etc/profile】【关闭防火墙】

  2. 安装ZooKeeper

  • 下载ZooKeeper安装包

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
  • 解压

    tar -zxvf zookeeper-3.4.10.tar.gz
  • 重命名

    mv zookeeper-3.4.10 zookeeper
  1. 修改配置文件【复制zoo_sample.cfg到zoo.cfg】

    cd /usr/local/zookeeper/conf
    mv zoo_sample.cfg zoo.cfg
    ------------zoo.cfg-------------
    (1)dataDir=/usr/local/zookeeper/data(注意同时在zookeeper创建data目录)
    创建服务器标识:myid
    服务器标识配置:
    创建文件夹: mkdir data
    创建文件myid并填写内容
    vi myid (内容为服务器标识【id】)
    (2)最后面添加集群服务器配置
    server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识
    id:myid中的内容,服务器标识
    host:服务器ip地址
    port:第一个端口,用于从follower连接到leader机器的端口
    port:第二个端口,用来进行leader选举时所用的端口
    e.g
    server.0=192.168.212.154:2888:3888
    server.1=192.168.212.156:2888:3888
    server.2=192.168.212.157:2888:3888
  2. 同样的在其它服务器上配置剩余节点 可以远程复制

    scp -r  /soft  root@zk2:/
    scp -r /soft root@zk3:/

    最后注意修改不同节点的myid文件内容

  3. 启动集群所有节点ZooKeeper

    路径: /usr/local/zookeeper/bin
    执行: zkServer.sh start
    (注意这里每台机器的ZooKeeper都要进行启动)
  4. 查看集群节点状态

    zkServer.sh status【在三个节点上检验zk的node,一个leader和俩个follower】

  伪集群模式其实就是在一台机器上通过不同端口号来模仿集群模式部署的

2.3 目录结构

目录 bin conf contrib dist-maven docs lib recipes src
作用 存放系统脚本 存放配置文件 zk附加功能支持 maven仓库文件 zk文档 依赖的第三方库 经典场景样例代码 zk源码

其中最重要的就是bin和conf两个目录

bin目录c

  • zkServer为服务器,启动后默认端口为2181

  • zkCli为命令行客户端

conf目录

conf目录为配置文件存放的目录,zoo.cfg为核心的配置文件,这里面的配置有很多,这配置是运维的工作,没必要全部掌握,挑选几个讲解:

  1. clientPort: 参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接

  2. dataDir: 用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

  3. dataLogDir: 用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

  4. snapCount: 新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机

    以下配置集群中才会使用

  5. tickTime: 心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

  6. initLimit: 多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

  7. syncLimit: 多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃

最新文章

  1. PullToRefreshScrollView嵌套SwipeMenuListView冲突问题解决
  2. 记录nginx 搭建集群环境踏过的坑
  3. struts1.3设置编码三种方法
  4. CSS那些事儿-阅读随笔2(选择符的组合与优先级/权重)
  5. HW3.26
  6. ARM学习笔记11——GNU ARM汇编程序设计
  7. UVA 11624 Fire! (bfs)
  8. C#中英文混合字符串过长截断
  9. 自定义ASP.NET WebApplication中调用SharePoint2010的对象
  10. BZOJ 2879: [Noi2012]美食节( 费用流 + 动态加边 )
  11. IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)
  12. TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免
  13. !function 笔记
  14. java8 for ,forEach ,lambda forEach , strean forEach , parller stream forEach, Iterator性能对比
  15. UVA1605-Building for UN(思维)
  16. LeetCode Search for a Range (二分查找)
  17. webgl绘制粗线段
  18. PHP匿名函数如何理解,什么是匿名函数
  19. js insertBefore
  20. Understanding the JavaScript Engine—— two phase

热门文章

  1. php 弱类型比较
  2. AOP 和 IOC
  3. React笔记01——React开发环境准备
  4. 包装CGFloat和用NSNumber初始化的区别?
  5. Web开发中的服务器跳转与客户端跳转
  6. jsp文件断点上传
  7. php linux环境安装ftp扩展
  8. Flask学习 3 url_for的使用
  9. jQuery AJAX and HttpHandlers in ASP.NET
  10. Hive presto和hive时间格式转换