zookeeper是什么?

highly reliable distributed coordination,用来做高可靠的分布式协调者,可用来:

  • 业务发现(service discovery)找到分布式系统中存在那些可用的服务和节点
  • 名字服务 (name service)通过给定的名字知道到对应的资源
  • 配置管理 (configuration management)如何在分布式的节点中共享配置文件,保证一致性。
  • 故障发现和故障转移 (failure detection and failover)当某一个节点出故障的时候,如何检测到并通知其它节点, 或者把想用的服务转移到其它的可用节点
  • 领导选举(leader election)如何在众多的节点中选举一个领导者,来协调所有的节点
  • 分布式的锁 (distributed exclusive lock)如何通过锁在分布式的服务中进行同步
  • 消息和通知服务 (message queue and notification)如何在分布式的服务中传递消息,以通知的形式对事件作出主动的响应

zk快速启动

  1. 下载官方版本:zookeeper-3.4.10.jar
  2. 解压到/usr/locak/zookeeper
  3. 配置文件,这里用单机来搭三个节点,生产时得分布在不同机器
  4. 集群模式配置文件
[root@c7bit1 conf]# cat zk2181.conf
dataDir=/data/zookeeper/data2181
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=2
server.1=127.0.0.1:2820:3820
server.2=127.0.0.1:2830:3830
server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2182.conf
dataDir=/data/zookeeper/data2182
clientPort=2182
tickTime=2000
initLimit=5
syncLimit=2
server.1=127.0.0.1:2820:3820
server.2=127.0.0.1:2830:3830
server.3=127.0.0.1:2840:3840 [root@c7bit1 conf]# cat zk2183.conf
dataDir=/data/zookeeper/data2183
clientPort=2183
tickTime=2000
initLimit=5
syncLimit=2
server.1=127.0.0.1:2820:3820
server.2=127.0.0.1:2830:3830
server.3=127.0.0.1:2840:3840

5.配置参数介绍

dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里

clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

tickTime: Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面就有一个数据就是 A 的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个 server。

6.启动zk

[root@c7bit1 bin]# cd /usr/local/zookeeper/bin/
[root@c7bit1 bin]# ./zkServer.sh start /data/zookeeper/conf/zk2181.conf
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/conf/zk2181.conf
Starting zookeeper ... STARTED 同理启动另外两个节点:
./zkServer.sh start /data/zookeeper/conf/zk2182.conf
./zkServer.sh start /data/zookeeper/conf/zk2183.conf

7.基本命令使用

ZooKeeper -server host:port cmd args
如:
./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 ls /
当然也可以只联接单个server,如:
./zkCli.sh -server 127.0.0.1:2181 后面如果不加命令,则进入交互模式。
[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port 创建一个新节点
[zk: 127.0.0.1:2181(CONNECTED) 20] create /name "abc"
Created /name 列出节点
[zk: 127.0.0.1:2181(CONNECTED) 23] ls /
[name, zookeeper] 获取一个节点的值
[zk: 127.0.0.1:2181(CONNECTED) 21] get /name
abc
cZxid = 0x60000001c
ctime = Thu Nov 29 21:33:31 CST 2018
mZxid = 0x60000001c
mtime = Thu Nov 29 21:33:31 CST 2018
pZxid = 0x60000001c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0 设置节点的值
[zk: 127.0.0.1:2181(CONNECTED) 24] set /name '123'
cZxid = 0x60000001c
ctime = Thu Nov 29 21:33:31 CST 2018
mZxid = 0x60000001d
mtime = Thu Nov 29 21:34:51 CST 2018
pZxid = 0x60000001c
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0 删除节点
[zk: 127.0.0.1:2181(CONNECTED) 26] delete /name
[zk: 127.0.0.1:2181(CONNECTED) 27] ls /
[zookeeper]

如果是远程shell操作,可以下载zookeepercli-1.0.10-1.x86_64.rpm

下载地址:https://github.com/outbrain/zookeepercli

使用和上面的基本一致

[root@c7bit1 conf]# rpm -ivh zookeepercli-1.0.10-1.x86_64.rpm
[root@c7bit1 conf]# zookeepercli --help
Usage of zookeepercli:
-acls="31": optional, csv list [1|,2|,4|,8|,16|,31]
-auth_pwd="": optional, digest scheme, pwd
-auth_usr="": optional, digest scheme, user
-c="": command, required (exists|get|ls|lsr|create|creater|set|delete|rm|deleter|rmr|getacl|setacl)
-debug=false: debug mode (very verbose)
-force=false: force operation
-format="txt": output format (txt|json)
-servers="": srv1[:port1][,srv2[:port2]...]
-stack=false: add stack trace upon error
-verbose=false: verbose
[root@c7bit1 bin]# zookeepercli -servers 127.0.0.1:2181 -c ls /
zookeeper

zookeeper入门及使用(一)- 安装及操作的更多相关文章

  1. zookeeper入门之介绍与安装

    一:zookeeper是什么 What is ZooKeeper? ZooKeeper is a centralized service for maintaining configuration i ...

  2. [转帖]Zookeeper入门看这篇就够了

    Zookeeper入门看这篇就够了 https://my.oschina.net/u/3796575/blog/1845035 Zookeeper是什么 官方文档上这么解释zookeeper,它是一个 ...

  3. (转)ZooKeeper伪分布式集群安装及使用

    转自:http://blog.fens.me/hadoop-zookeeper-intro/ 前言 ZooKeeper是Hadoop家族的一款高性能的分布式协作的产品.在单机中,系统协作大都是进程级的 ...

  4. zookeeper入门必读

    (如果感觉有帮助,请帮忙点推荐,添加关注,谢谢!你的支持是我不断更新文章的动力.本博客会逐步推出一系列的关于大型网站架构.分布式应用.设计模式.架构模式等方面的系列文章) 今天我想谈谈zookeepe ...

  5. zookeeper入门知识

    ZooKeeper 是什么? ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) . 蜜蜂(Hive) .小猪(Pig)  的管理员, Apache Hbase和 Apache ...

  6. ZooKeeper入门

    ZooKeeper简介 ZooKeeper是一个构建在Paxos算法上的高可用的分布式数据管理与系统协调框架,提供了一系列原语集,更上层的应用可以用它来实现同步,配置管理,名称服务,Master选举, ...

  7. zookeeper 入门知识

    作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心)  . 负载均衡(du ...

  8. 前端组件化Polymer入门教程(1)——初识&&安装

    前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...

  9. Greenplum入门——基础知识、安装、常用函数

    Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709    版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...

  10. ZooKeeper系列(2) 安装部署 (转)

    原文地址:http://www.cnblogs.com/wuxl360/p/5817489.html 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模 ...

随机推荐

  1. (Android系统目录结构)/mnt/sdcard 和 sdcard 的区别

    mnt/是Unix/Linux系统下外部设备的专用目录,Linux默认挂载外部设备都会挂载到这个目录;如将SD卡挂载后,会生成目录:/mnt/sdcard/. shell@aeon6735m_65c_ ...

  2. [洛谷P1638]逛画展

    [洛谷P1638]逛画展 题目大意: 有\(n(n\le10^6)\)个格子,每个格子有一种颜色.颜色种数为\(m(m\le2000)\).求包含所有颜色的最小区间. 思路: 尺取法裸题. 思路: # ...

  3. [Codeforces113C]Double Happiness(数论)

    题意 给定闭区间[l,r] [l,r] [l,r],找出区间内满足t=a2+b2 t=a^{2}+b^{2} t=a2+b2的所有素数t t t的个数( a,b a,b a,b为任意正整数). 思路 ...

  4. pygame-KidsCanCode系列jumpy-part9-使用spritesheet

    做过前端的兄弟应该都知道css sprite(也称css精灵),这是一种常用的减少http请求次数的优化手段.把很多小图拼成一张大图,只加载1次,然后用css定位到不区的区域,从而展示不同的图片.游戏 ...

  5. 大神们都在用的两个国外的免费离线下载:Rain& LoadBT

    大神们都在用的两个国外的免费离线下载:Rain& LoadBT 最近QQ离线和迅雷离线也都挂了,115还死贵,所以分享两个国外免费的网站.希望可以为大家提供一些帮助,同时也借此机会同大家相互交 ...

  6. 无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失

    在使用windows2012 的服务器或云主机时,服务器安装不了iis服务. 提示 “无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失”. 这个问题可能的原因是您的机器未设置虚拟内存,可 ...

  7. mysql [索引优化] -- in or替换为union all

    一个文章库,里面有两个表:category和article.category里面有10条分类数据.article里面有 20万条.article里面有一个"article_category& ...

  8. jquery自带的进度条功能如何使用?

    弹出进度条:先做弹出的功能modal,再做进度条显示.在弹出的界面上增加进度条功能 $.ajax({ xhr: function() { var xhr = new window.XMLHttpReq ...

  9. Mysql中DDL, DML, DCL, 和TCL是什么?

    在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢? SQL(Structure Query Language)是数据库操作的的核心语言,接下来我们通过一张图 ...

  10. HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性、非功能性、关键约束)-下篇

    一.开篇 上一篇<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇>我们详细分析了在架构分析过程中我们需要注意的内容,架构过程的方法论及 ...