1. Zookeeper的介绍
  2. ZK在分布式系统的应用
  3. Zookeeper搭建
  4. 集群角色介绍
  5. ZK的常用命令

一、Zookeeper的介绍

官方:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

二、ZK在分布式系统的应用

  1. 分布式配置中心
  2. 分布式job
  3. 服务注册与发现
  4. 存储数据

三、Zookeeper搭建

1)单机模式

  1. 官网下载:zookeeper官网
  2. 解压tar zxvf zookeeper-3.4.11.tar.gz
  3. 进入conf目录下:cp zoo_sample.cfg zoo.cfg
  4. 启动:进入bin目录下:sh zkServer.sh start
  5. 验证:在bin目录下:sh zkServer.sh status 或者使用jps -vm查看
  6. 连接:在bin目录下:sh zkCli.sh

2)集群模式(机器有限,使用伪分布式)

1、描述

伪分布式集群就是在一台机器部署多个zk应用,部署之前服务器需要有jdk环境。使用 java -version可以显示相关java信息才可以进行zookeeper搭建。

2、步骤

  1. 官网下载:zookeeper官网

  2. 解压tar zxvf zookeeper-3.4.11.tar.gz

  3. 进入conf目录下:

    cp zoo-sample.cfg zoo1.cfg
    cp zoo-sample.cfg zoo2.cfg
    cp zoo-sample.cfg zoo3.cfg
  4. 分别对zoo1.cfg、zoo2.cfg、zoo3.cfg文件进行编辑:

    #不同的地方,下面分别为d_1、d_2、d_3
    dataDir=/apps/servers/data/d_1
    #同上
    dataLogDir=/apps/servers/logs/logs_1
    #不同zoo.cfg修改自己的属性和端口号,为分布式端口号需要不一样
    #分别是2181、2182、2183
    clientPort=2181
    #每个配置文件都需要配置如下三条,互相告知集群里有谁
    #第一个端口号用于集群通讯,第二个端口号用于集群选举
    server.1=192.168.31.132:2187:2887
    server.2=192.168.31.132:2188:2888
    server.3=192.168.31.132:2189:2889
  5. 分别创建data目录和日志目录:

    mkdir /apps/servers/data/d_1
    mkdir /apps/servers/data/d_2
    mkdir /apps/servers/data/d_3 mkdir /apps/servers/logs/logs_1
    mkdir /apps/servers/logs/logs_2
    mkdir /apps/servers/logs/logs_3 echo "1" > /apps/servers/data/d_1/myid
    echo "2" >/apps/servers/data/d_2/myid
    echo "3" >/apps/servers/data/d_3/myid
  6. 进入bin目录下输入命令分别进行启动:

    zkServer.sh start ../conf/zoo1.cfg
    zkServer.sh start ../conf/zoo2.cfg
    zkServer.sh start ../conf/zoo3.cfg
  7. 通过命令检测是否成功:注意防火墙和配置是否成功,这个是部署成功的关键

   #进入bin目录下:
sh zkCli.sh -server 192.168.31.132:2181, 192.168.31.132:2182, 192.168.31.132:2183

结果如下:

四、集群角色介绍

  1. Leader:

    Leader作为整个ZooKeeper集群的主节点,负责响应所有对ZooKeeper状态变更的请求。它会将每个状态更新请求进行排序和编号,保证整个集群内部消息处理的FIFO,写操作都走leader,zk里面leader只有一个。

  2. Follower:

    Follower的逻辑就比较简单。除了响应本服务器上的读请求外,follower还要处理leader的提议,并在leader提交该提议时在本地也进行提交。另外需要注意的是,leader和follower构成ZooKeeper集群的法定人数,也就是说,只有他们才参与新leader的选举、响应leader的提议。帮助leader处理读请求,投票权。

  3. Observer:

    如果ZooKeeper集群的读取负载很高,或者客户端多到跨机房,可以设置一些observer服务器,以提高读取的吞吐量。Observer和Follower比较相似,只有一些小区别:首先observer不属于法定人数,即不参加选举也不响应提议;其次是observer不需要将事务持久化到磁盘,一旦observer被重启,需要从leader重新同步整个名字空间。没有投票权利,可以处理读请求。

五、ZK的常用命令

Zookeeper的使用场景和集群配置的更多相关文章

  1. 基于zookeeper的activemq的主从集群配置

    项目,要用到消息队列,这里采用activemq,相对使用简单点.这里重点是环境部署. 0. 服务器环境 RedHat710.90.7.210.90.7.1010.90.2.102 1. 下载安装zoo ...

  2. solrCloud+tomcat+zookeeper集群配置

    solrcolud安装solrCloud+tomcat+zookeeper部署  转载请出自出处:http://eksliang.iteye.com/blog/2107002 http://eksli ...

  3. zookeeper集群配置与启动——实战

    1,准备: A:三台linxu服务器: 10.112.29.177 10.112.29.172 10.112.29.174 命令 hostname 得到每台机器的 hostname vm-10-112 ...

  4. zookeeper集群配置与启动

    摘要:Zookeeper是一个很好的集群管理工具,被大量用于分布式计算.如Hadoop以及Storm系统中.这里简单记录下Zookeeper集群环境的搭建过程.本文以Ubuntu 12.04 LTS作 ...

  5. 使用 ZooKeeper 同步集群配置

    用 ZooKeeper 同步集群配置,当需要修改所有节点配置时,将配置更新到 ZooKeeper 的一个节点,引起这个节点数据发生变化, 其他所有需要同步配置的节点上的本地 Watcher 会立即发现 ...

  6. zookeeper[5] zookeeper集群配置及伪集群配置

    参考:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html 集群配置: 1.配置文件conf/zoo.cfg,除了单机模式的配置之外, ...

  7. zookeeper的安装及集群配置

    1.解压 2.修改配置文件 cp zoo_sample.cfg zoo.cfg vim zoo.cfg dataDir=/usr/local/zookeeperData 其余采用默认 参数说明: ti ...

  8. HyperLedger Fabric基于zookeeper和kafka集群配置解析

    简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群 ...

  9. zookeeper集群配置详细教程

      第一步:环境准备 环境 版本 说明 JDK 1.8 zookeeper运行所需 centos 7 操作系统 需要配置好JDK的环境变量 zookeeper-3.4.9.tar.gz 3.4.9 z ...

随机推荐

  1. UML-6.4-用例-准则

    1.以无用户界面约束的本质风格编写用例--目标的目标(根源目标 or 意图 ,二阶思维). 比如:“登录”,脑子里不仅想到了用户名/密码/验证码这些图形,而且,更关注为啥需要登录:如“系统根据身份id ...

  2. Django框架的前奏(安装及介绍)

    几个重要的概念: web的本质: 浏览器中输入网址敲回车发生了几件事? 1.浏览器向服务端发送请求 2.服务端接收请求 3.服务端返回相应的响应 4.浏览器接收响应  根据特定的规则渲染页面展示给用户 ...

  3. [APIO2016]Gap(交互)

    第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可. 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1 ...

  4. Qt的窗口如何显示在spi屏幕上

    问题:我们可以将qt移植到H3上,但是如果要将窗口通过spi屏进行显示应该怎么做呢,和framebuffer又有什么关系? 这里只说一下qt在spi屏上显示的技术原理,具体的实现还需要自己努力. 一. ...

  5. Codeforces Round #525 (Div. 2)后俩题

    E:https://codeforces.com/contest/1088/problem/E dp+贪心 题目大意:选择一个k并且选择k个连通块,要求sigma a[i]/k最大,k尽量大,对于给定 ...

  6. [HNOI2003]操作系统 优先队列用法

    题:https://www.cometoj.com/problem/1046 #include<bits/stdc++.h> using namespace std; typedef lo ...

  7. Qt LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突问题

    解决方法:1.找到选项: 2.点击构建套件kit,选择x86_amd64,之后便不会出现类似问题了

  8. plsql中文显示问号

    1. select userenv('language') from dual 2. 复制查询的值配置系统环境变量 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 3.配置系统环 ...

  9. 吴裕雄--天生自然 R语言开发学习:基础知识

    1.基础数据结构 1.1 向量 # 创建向量a a <- c(1,2,3) print(a) 1.2 矩阵 #创建矩阵 mymat <- matrix(c(1:10), nrow=2, n ...

  10. MAC地址和IP地址是否缺一不可

    答案是肯定的,我们来具体分析: 在网络传输的过程中,第一次将信息从A端发往B端时,首先在A端需要将信息从应用层开始到物理层进行逐层封装,到达B端后再从物理层到应用层进行逐层分用解包,最后拿到信息. 信 ...