zookeeper相关总结

zookeeper作用
-----------------------------------------------------
    配置维护
    域名服务
    分布式同步
    组服务

zk工作流程
-----------------------------------------------------
    zk集群启动后,client连接到其中的一个节点,这个节点可以leader,也可以follower。
    连通后,node分配一个id给client,发送ack信息给client。
    如果客户端没有收到ack,连接到另一个节点。
    client周期性发送心跳信息给节点保证连接不会丢失。

    如果client读取数据,发送请求给node,node读取自己数据库,返回节点数据给client.

    如果client存储数据,将路径和数据发送给server,server转发给leader。
    leader再补发请求给所有follower。只有大多数(超过半数)节点成功响应,则写操作成功。

单机版安装
-----------------------------------------------------
tar -xzvf zookeeper-3.4.10.tar.gz -C /root/apps/
ln -s zookeeper-3.4.10/ zk

[zk/conf]
cp zoo.cfg.sample zoo.cfg

//修改zoo.cfg
dataDir=/root/apps/zookeeper-3.4.10/data   
dataLogDir=/root/apps/zookeeper-3.4.10/logs

bin/zkServer.sh start

bin/zkCli.sh -server hdp01:2181  //客户端连接

[zk: localhost:2181(CONNECTED) 10] 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

//命令行客户端操作
-----------------------------------------------------
//查看cluster目录下的文件
ls /cluster

//创建znode,必须添加存储的数据
create /dir  aaa

//会删除该目录及子节点
rmr /dir 

//查看dir节点的详细信息
[zk: localhost:2181(CONNECTED) 23] get /dir
bbb
cZxid = 0x500000015
ctime = Wed Jan 09 00:59:13 CST 2019
mZxid = 0x500000016
mtime = Wed Jan 09 00:59:16 CST 2019
pZxid = 0x500000015
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

//更新,会使dataVersion增1,zk使用其控制并发,乐观锁原理的实现
set /dir bbb

zk中的3种目录类型
--------------------------------------------------------------------
create [-s] [-e] path data acl  

1.持久目录(默认,不加[e],[s])
      client结束,还存在。
        
2.临时目录
create -e /dirtemp aaa
    在client活动时有效,断开自动删除。临时目录不能有子目录。
    leader推选是使用。

3.序列目录
 在目录名之后附加10个数字,主要用于同步和锁.

[zk: localhost:2181(CONNECTED) 27] create -s /seq aaa 
Created /seq0000000023

leader推选过程(最小号选举法)
----------------------------------------------------------------------------
    1.所有节点在同一目录下创建临时序列节点。
    2.节点下会生成/xxx/xx000000001等节点。
    3.序号最小的节点就是leader,其余就是follower.
    4.每个节点观察小于自己节点的主机。(注册观察者)
    5.如果leader挂了,对应znode删除了。
    6.观察者收到通知。
    7.序号最小的节点就是leader


zk集群搭建
-------------------------------------------------------------------------
tar -xzvf zookeeper-3.4.10.tar.gz -C /root/apps/
ln -s zookeeper-3.4.10/ zk

[zk/conf]
cp zoo.cfg.sample zoo.cfg

//修改zoo.cfg
dataDir=/root/apps/zookeeper-3.4.10/data   
dataLogDir=/root/apps/zookeeper-3.4.10/logs
server.1=hdp01:2888:3888
server.2=hdp02:2888:3888
server.3=hdp03:2888:3888

mkdir /root/apps/zookeeper-3.4.10/data   
touch /root/apps/zookeeper-3.4.10/data/myid
echo 1>/root/apps/zookeeper-3.4.10/data/myid

scp -r root@hdp02:/root/apps
scp -r root@hdp02:/root/apps
修改hdp02、hdp03中的myid文件为对应的编号

//修改log4j.properties
:r! echo /root/apps/zookeeper-3.4.10/logs

zookeeper.root.logger=INFO, CONSOLE
zookeeper.console.threshold=INFO
zookeeper.log.dir=/root/apps/zookeeper-3.4.10/logs/
zookeeper.log.file=zookeeper.log
zookeeper.log.threshold=DEBUG
zookeeper.tracelog.dir=/root/apps/zookeeper-3.4.10/logs/
zookeeper.tracelog.file=zookeeper_trace.log


集群批量启动脚本
-------------------------------------------------------------------------
touch start-all.sh

#!/bin/sh

for i in {1..3}
do
    ssh root@hdp0$i "source /etc/profile;/root/apps/zookeeper-3.4.10/bin/zkServer.sh start;"
done


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值