zookeeper入门及使用(一)- 安装及操作
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快速启动
- 下载官方版本:zookeeper-3.4.10.jar
- 解压到/usr/locak/zookeeper
- 配置文件,这里用单机来搭三个节点,生产时得分布在不同机器
- 集群模式配置文件
[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入门及使用(一)- 安装及操作的更多相关文章
- zookeeper入门之介绍与安装
一:zookeeper是什么 What is ZooKeeper? ZooKeeper is a centralized service for maintaining configuration i ...
- [转帖]Zookeeper入门看这篇就够了
Zookeeper入门看这篇就够了 https://my.oschina.net/u/3796575/blog/1845035 Zookeeper是什么 官方文档上这么解释zookeeper,它是一个 ...
- (转)ZooKeeper伪分布式集群安装及使用
转自:http://blog.fens.me/hadoop-zookeeper-intro/ 前言 ZooKeeper是Hadoop家族的一款高性能的分布式协作的产品.在单机中,系统协作大都是进程级的 ...
- zookeeper入门必读
(如果感觉有帮助,请帮忙点推荐,添加关注,谢谢!你的支持是我不断更新文章的动力.本博客会逐步推出一系列的关于大型网站架构.分布式应用.设计模式.架构模式等方面的系列文章) 今天我想谈谈zookeepe ...
- zookeeper入门知识
ZooKeeper 是什么? ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) . 蜜蜂(Hive) .小猪(Pig) 的管理员, Apache Hbase和 Apache ...
- ZooKeeper入门
ZooKeeper简介 ZooKeeper是一个构建在Paxos算法上的高可用的分布式数据管理与系统协调框架,提供了一系列原语集,更上层的应用可以用它来实现同步,配置管理,名称服务,Master选举, ...
- zookeeper 入门知识
作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心) . 负载均衡(du ...
- 前端组件化Polymer入门教程(1)——初识&&安装
前端组件化Polymer入门教程目录: 前端组件化Polymer入门教程(1)--初识&&安装 前端组件化Polymer入门教程(2)--快速入门 前端组件化Polymer入门教程(3 ...
- Greenplum入门——基础知识、安装、常用函数
Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709 版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...
- ZooKeeper系列(2) 安装部署 (转)
原文地址:http://www.cnblogs.com/wuxl360/p/5817489.html 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模 ...
随机推荐
- (Android系统目录结构)/mnt/sdcard 和 sdcard 的区别
mnt/是Unix/Linux系统下外部设备的专用目录,Linux默认挂载外部设备都会挂载到这个目录;如将SD卡挂载后,会生成目录:/mnt/sdcard/. shell@aeon6735m_65c_ ...
- [洛谷P1638]逛画展
[洛谷P1638]逛画展 题目大意: 有\(n(n\le10^6)\)个格子,每个格子有一种颜色.颜色种数为\(m(m\le2000)\).求包含所有颜色的最小区间. 思路: 尺取法裸题. 思路: # ...
- [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为任意正整数). 思路 ...
- pygame-KidsCanCode系列jumpy-part9-使用spritesheet
做过前端的兄弟应该都知道css sprite(也称css精灵),这是一种常用的减少http请求次数的优化手段.把很多小图拼成一张大图,只加载1次,然后用css定位到不区的区域,从而展示不同的图片.游戏 ...
- 大神们都在用的两个国外的免费离线下载:Rain& LoadBT
大神们都在用的两个国外的免费离线下载:Rain& LoadBT 最近QQ离线和迅雷离线也都挂了,115还死贵,所以分享两个国外免费的网站.希望可以为大家提供一些帮助,同时也借此机会同大家相互交 ...
- 无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失
在使用windows2012 的服务器或云主机时,服务器安装不了iis服务. 提示 “无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失”. 这个问题可能的原因是您的机器未设置虚拟内存,可 ...
- mysql [索引优化] -- in or替换为union all
一个文章库,里面有两个表:category和article.category里面有10条分类数据.article里面有 20万条.article里面有一个"article_category& ...
- jquery自带的进度条功能如何使用?
弹出进度条:先做弹出的功能modal,再做进度条显示.在弹出的界面上增加进度条功能 $.ajax({ xhr: function() { var xhr = new window.XMLHttpReq ...
- Mysql中DDL, DML, DCL, 和TCL是什么?
在一些公司中提交给测试团队的SQL脚本会划分为DDL.DML等,但这些概念到底是如何定义的呢? SQL(Structure Query Language)是数据库操作的的核心语言,接下来我们通过一张图 ...
- HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性、非功能性、关键约束)-下篇
一.开篇 上一篇<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇>我们详细分析了在架构分析过程中我们需要注意的内容,架构过程的方法论及 ...