Zookeeper 简介、安装、集群、常用命令


 

zk简介

zookeeper 动物园管理员,可以用来管理 hadoop(大象)、hive(蜜蜂)、pig(小 猪)、tomcat(猫)等。
 

zk是一个高性能的分布式管理、协调框架,主要功能包括

  • 服务治理
  • 作为配置中心,统一管理配置。dubbo的服务治理、配置中心一般用zk来实现。
  • 实现分布式锁。使用临时znode实现。
  • 发布/订阅,使用watcher机制实现。
  • 实现队列。利用zk执行写请求的顺序一致性来实现(paxos算法)。

zk不是数据库、消息中间件之类的专门存储大量数据的组件,一般不用于存储大量数据,zk可以实现队列,但一般不用zk实现队列。

 

zk的下载

下载地址:https://zookeeper.apache.org/releases.html

下载 .tar.gz,win、linux都是同一个安装包

 

zk的安装

zk依赖于jdk,需要先安装jdk,配置jdk的环境变量。
 

win版

直接双击bat,或者命令行执行zkServer.bat启动,Ctrl+C或关闭窗口终止运行。

不需要加参数 start,加上start反而会报错

ERROR [main:ZooKeeperServerMain@69] - Invalid arguments, exiting abnormally
java.lang.NumberFormatException: For input string: “xxx\zoo.cfg”

 

linux版
#解压,win上可直接用WinRar之类的软件解压
tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz
mv apache-zookeeper-3.6.0-bin zk
rm apache-zookeeper-3.6.0-bin.tar.gz


cd zk


#zk server启动时默认加载的配置文件是conf/zoo.cfg,zoo_sample.cfg是官方提供的配置示例
cp conf/zoo_sample.cfg conf/zoo.cfg


#在解压目录下新建目录data,编辑zoo.cfg,修改dataDir为刚才新建的data目录 /usr/local/zk/data
mkdir data
vim conf/zoo.cfg


#data下新建文件myid,在myid中写一个1表示当前zk节点编号
#myid在zk server集群中才有用,单机版zk server可以不配置
touch data/myid
vim data/myid


# 防火墙开放zk的端口
firewall-cmd --add-port=2181/tcp --zone=public --permanent 
firewall-cmd --reload


#启动zk server,win用cmd,linux用sh
bin/zkServer.sh start

#看到打印出started说明启动成功,jps看到的QuorumPeerMain即是zk的进程,也可以ps -ef|grep zookeeper查看

zk可以直接被外网访问,不需要在配置文件中绑定本机实际ip。

 

zk server 常用命令

./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart

./zkServer.sh status

./zkServer.sh version

 

配置项介绍

zoo.cfg

tickTime=2000  #心跳间隔,每隔2000ms即2s发送一次心跳

initLimit=10  #10*2s=20s,如果连续10次即20s内没有收到某个服务节点的心跳,就认为该节点挂掉了

syncLimit=5  #follower从leader同步数据时,发送同步请求后,如果5个心跳时间内即10s内没有收到leader的确认应答,就认为本次同步请求失败

dataDir=/usr/local/zk/data  #数据存储位置

clientPort=2181  #zk client、zk server之间通信使用的端口,默认2181

#maxClientCnxns=60  #zk client的最大数量

 

连接到zk server

1、使用zk自带的命令行客户端,bin/zkCli.sh

# -server指定zk server的ip、port。缺省-server时默认为127.0.0.1:2181
bin/zkCli -server 127.0.0.1:2181

 
2、使用图形化客户端

 

搭建zk server集群

至少3个zk server,官方建议奇数个。
 
1、在每个zk server的zoo.cfg中,clientPort配置项的下面添加集群信息配置

clientPort=2181

# 集群信息配置
server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888

指定各个zk server的myid、ip,myid唯一标识一个zk server,有的习惯从0开始,有的习惯从1开始。

2181是zk client、zk server之间通信的端口,2888是zk server节点之间通信的端口,3888是follower选举leader时使用的端口。

 

2、编辑各个zk server的data/myid,写上对应的myid

eg. server.1=192.168.1.1:2888:3888 ,192.168.1.1这个zk server的myid就是1(server后面的数字)

 

3、启动各个zk server,会自动分配角色(leader、follower、observer)。leader只有1个

# 查看当前zk server的状态,其中可以看到该zk server在集群中的角色
./zkServer.sh  status 

 

zk cli常用命令

# 创建节点/mall,缺省参数默认为永久节点
create /mall


# -e是临时节点,-s是顺序节点,-e -s可以一起使用
# 原本节点名是/mall,-s会自动在节点名后面加一串数字作为新的节点名,一串数字表示顺序
create -e /mall


#可以携带数据,此处携带的数据是abcd
create /mall xm-mall


# 创建子节点。znode和linux的目录结构差不多,linux目录的很多命令都可以用
create /mall/user chy


# 查看节点携带的数据
get /mall/user


# 设置、修改节点携带的数据。先前未携带数据则为设置,先前已携带数据则为更新
set /mall/user 1234
# 每次设置数据时,都会自动将dataVersion+1,dataVersion可以实现数据库乐观锁version相似的功能



# 查看指定节点的所有子节点。只列出子节点,不列出孙节点
ls /mall

# 根节点/下有个zookeeper节点,是zk自带的
ls /



# 查看指定节点的状态
stat /mall

# 返回值示例
cZxid = 0x6  #创建此节点的事务id。创建此节点是作为事务处理的,c是create
ctime = Sun Apr 19 17:16:14 CST 2020  #此节点的创建时间
mZxid = 0x6   #此节点最近一次更新操作的事务id。写(更新)操作才加事务
mtime = Sun Apr 19 17:16:14 CST 2020   #此节点最近一次更新操作的时间
pZxid = 0x8  #此节点的子节点列表最近一次修改的事务id
cversion = 1  #子节点列表的版本
dataVersion = 0  #数据版本
aclVersion = 0  #acl版本
ephemeralOwner = 0x0  #创建临时节点的事务id。如果当前节点是临时节点才有值,如果不是临时节点,值为0
dataLength = 4  #携带的数据的长度
numChildren = 1  #子节点的数量



# 删除一个空节点,如果该节点有子节点则删除不了
delete /mall/user
# 删除指定节点,会递归删除子孙节点
deleteall /mall
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值