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安装方式有三种,单机模式和集群模式以及伪集群模 ...
随机推荐
- [BZOJ5064]B-number
[BZOJ5064]B-number 题目大意: 求\(1\sim n(n\le10^{15})\)间有多少数满足是\(13\)的倍数且包含字符串\(13\). 思路: 数位DP.\(f[i][j][ ...
- 封装、property特性及绑定与非绑定方法
1.封装 (1)什么是封装? 封:属性对外是隐藏的,但对内是开放的: 装:申请一个名称空间,往里面装入一系列名字/属性 (2)为什么要封装? 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使 ...
- [P2996][USACO10NOV]拜访奶牛Visiting Cows (树形DP)
之前写在洛谷,结果没保存,作废…… 听说考前写题解RP++哦 思路 很容易想到是 树形DP 如果树形DP不知道是什么的话推荐百度一下 我在这里用vector储存边 设状态f[i][0]为i点不访问,f ...
- HTTP中的重定向和请求转发的区别(转)
一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下: request.getRequestDispatcher("new.jsp").forward(reques ...
- Hibernate(7)关联关系_单向1对n
1.单向一对多(@OneToMany)关联是比较少用的(一般用双向一对多代替). 2.实体类: 1端:Publishers.java public class Publishers { private ...
- J - 青蛙的约会(扩展欧几里得)
https://vjudge.net/contest/218366#problem/J 第一步追及公式要写对:y+nk-(x+mk)=pL => (n-m)k+lp=x-y 可以看出扩展欧几里得 ...
- WPF之几何图形Geometry
在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...
- 为Ubuntu新创建用户创建默认.bashrc并自动加载
首先,su – 到新创建的用户 拷贝默认的.bashrc过来 1 cp /etc/skel/.bashrc ~/ 然后创建.profile文件 1 vi ~/.profile 粘贴下面的内容 ...
- 解决TextView drawableRight左侧图片大小不可控的问题
通过代码来修改图片的大小: Drawable rightDrawable= context.getResources().getDrawable(R.drawable.more); rightDraw ...
- CentOS7配置防火墙
使用命令的方式配置 ##Add firewall-cmd --permanent --zone=public --add-port=/tcp ##Remove firewall-cmd --perma ...