首页 > 其他 > 详细

Zookeeper节点增删改查与集群搭建(笔记)

时间:2018-06-10 10:44:20      阅读:629      评论:0      收藏:0      [点我收藏+]

1、上传文件目录说明

上传的文件一般放在 /home/

安装文件一般在 /usr/local/

2. 安装zookeeper

2.1zookeeper-3.4.11.tar.gz拷贝到/home/

2.2解压、重命名、移动

tar -xvzf zookeeper-3.4.11.tar.gz

mv zookeeper-3.4.11.tar.gz zookeeper

mv zookeeper /usr/local

3. 配置环境变量

vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin;

 

sourse /etc/profile //刷新文件

 

4. 目录结构

bin:运行命令

conf:配置文件

contri:附加功能

dist-mavenmaven编译后的目录

docs:文档

lib:依赖的jar

recipes:案例demo代码

src:源码

5. 启动zookeeper

5.1修改conf/

cd /usr/local/zookeeper/conf/

cp zoo_sample.cfg zoo.cfg

zoo.cfg参数说明:tickTime(时间单元)initLimit(节点同步到master节点的连接时间)syncLimit(master节点与从节点发消息请求和应答时间)dataDir(必须配置)dataLogDir(日志目录)clientPort(连接服务器端口,默认2181)

5.2启动

cd /usr/local/zookeeper/bin

启动服务端:./zkServer.sh start

启动客户端:./zkCli.sh

 

6. Linux端命令

启动客户端之后:

help:查看zk命令

lsls  / (/代表根节点,/下的目录代表子节点)

ls2ls  /+状态信息(stat /)

getget  / 获得当前节点的数据

session:客户端与服务端的会话、可设置超时时间、心跳结束session过期、session过期临时节点znode被抛弃

心跳机制:客户端向服务端的ping包请求,或者不删、挂了才删,重新连接后如果心跳机制未超时,临时节点还存在

create /zkfk zkfk-data:创建一个zkfk目录,zkfk-data节点

create -e /zkfk/temp zdfk-data temp目录下创建一个zkfk-data临时节点(-e)

create -s /zkfk/seq seq:创建sequence目录,名称自动增长(-s)

set /zkfk new-data 1:修改zkfk节点,zkfk-data -> new-data,版本号加11代表最新版本号

delete /zkfk/seq0000000005 1:删除目录,版本号为1的目录

watcher:监督每个节点的操作,znode变化时触发,触发后立即销毁,父子节点增删改能够触发

stat /zkfk/one watch:创建时触发watch()

get /zkfk/one watchget时设置,当修改、删除时触发watch()

ls /zkfk watch:创建、删除子节点时触发watch()

get /zkfk/one watch:修改时触发watch()

acl:权限控制,getAcl(获取节点权限信息)setAcl(设置节点权限信息)addauth(输入认证授权信息)

crdwacreate(创建子节点)readdelete(删除子节点)wirteadmin(设置权限)

setAcl /zkfk/one world:anyone:crwa:设置权限,不能删除

addauth digest fk:fk:添加用户fk,密码fk或登录

setAcl /zkfk/one auth:fk:fk:cdrwa:通过认证信息设置权限

setAcl /zkfk/one digest:fk:xJ0PRXcE29ROsbH4WtFbbjYdsP8=:cdrwa:通过认证信息设置权限

setAcl /zkfk/ip ip:192.168.1.103:cdrwa:通过ip设置权限

超级管理员权限:

vim zkServer.sh修改如下

 技术分享图片

重启服务

 

四字命令:是有自身的简短命令与服务器进行交互(先:yum install nc )

echo stat | nc localhost 2181:查看当前ip端口stat信息

echo ruok | nc localhost 2181:查看当前ip端口zk是否启动

echo dump | nc localhost 2181:查看当前ip端口未经处理的会话和临时节点

echo conf | nc localhost 2181:查看当前ip端口服务器配置信息

echo confs| nc localhost 2181:查看当前ip端口连接到服务器的客户端信息

echo envi| nc localhost 2181:查看当前ip端口环境变量

mntr:健康信息

wchswatch信息

4lw.commands.whitelist=*:开启所有四字命令,修改zookeeper/conf/zoo.cfg文件,加载最后一行,重启

wchcwatch节点

wchpwatch路径

 

7. 集群

7.1选举模式:

master节点down机器,子节点会竞争,有一个子节点成为master节点,若开始的master节点恢复,则成为子节点

7.2伪分布式集群搭建

  1. zookeeper/conf/zoo.cfg中添加:

server.1=192.168.107.128:2888:3888

server.2=192.168.107.128:2889:3889

server.3=192.168.107.128:2890:3890

说明:2888端口(集群中同步数据的端口)3888端口(选举模式下选举端口)

  1. 修改1中的dataDir=/usr/local/zookeeper/dataDir,并在对应目录下创建myid文件
  2. zookeeper文件复制两份,命名:zookeeper02zookeeper03

cp zookeeper zookeeper02 -rf

cp zookeeper zookeeper03 -rf

  1. 修改zookeeper02zookeeper03中重复2步骤:并将dataDir改为自己目录、改clientPort
  2. 启动三个zookeeper的服务端:./zkServer.sh start
  3. 客户端连接服务端:./zkCli.sh -server localhost:2181 更改节点,在连接其他服务端,可查看到节点已经更改 即:同步。

7.3真分布式集群搭建

1、准备三台服务器,为了区分zookeeper,分别命名为:zookeeperzookeeper_c01zookeeper_c02ip分别为:

CeantOS64(zookeeper)192.168.107.128

CeantOS64_clon01(zookeeper_c01)192.168.107.130

CeantOS64_clon02(zookeeper_c02)192.168.107.131

 技术分享图片技术分享图片

 

2、分别在三台服务气的 zookeeper/conf/zoo.cfg中添加:

server.1=192.168.107.128:2888:3888

server.2=192.168.107.130:2888:3888

server.3=192.168.107.131:2888:3888

其中clientPort都设置为2181dataDir改为各自的目录,分别在各自dataDir对应的目录下创建myid文件夹,值分别为123

3、启动三台zookeeper服务,并客户端连接,在任意服务器创建、修改删除zNode都会同步到其他机器

4、查看主从节点:./zkServer.sh status

8.Java客户端连接zookeeper服务

8.1会话重连:

/**

*连接服务端

*@param zkServerPathzk服务端地址端口,例如192.168.1.1:2181

*@param timeout:超时时间,例如5s5000

*@param ZKConnectSessionWatcherwatcher

**/

Zookeeper zk = new Zookeeper(zkServerPath,timeout,new ZKConnectSessionWatcher());

 

/**

*会话重连(根据sessionIdsessionPasswod

*前三个参数同上

*@param sessionIdzk.getSessionId()

*@param sessionPasswdzk.getSessionpasswd()

**/

Zookeeper zk = new Zookeeper(connectZkPath,timeout,ZKConnectSessionWatcher(),

sessionId,sessionPasswd);

8.2创建节点

/**

*同步方式创建节点

*@param path:节点路径

*@param data:节点数据byte[]

*@param cals:权限, Ids.属性

*@param CreateModeCreateMode.属性(临时节点、持久节点、顺序节点)

**/

zk.create(path,data,acls,CreateMode.EPHEMERAL);

 

/**

*异步方式创建节点

*前四个参数与上面一样

*@param new CreateCallBack():回调函数

*@param ctx:创建节点后做的一些操作,如:返回信息({‘create’:’success’}”)、执行sql、消 息队列发送消息等

**/

zk.create(path,data,acls,CreateMode.PERSISTENT,new CreateCallBack(),ctx);

8.3修改节点

/**

*@param path :节点路径,如:/node

*@param data :节点数据byte[],如:”nodeData”.getBytes()

*@param version :版本号(相当于乐观锁,get /  后显示的dataVersion

* @return Stat :执行之后显示的信息,与get / 返回的信息一致

**/

Stat status = zk.setData(path,data,version);

异步与8.2类似

8.4删除节点

/**

*@param path :节点路径

*@param version : 版本号(相当于乐观锁,get /  后显示的dataVersion

**/

zk.delete(path,version);

异步与8.2类似,同步方式无返回值,建议使用异步方式

 

Zookeeper节点增删改查与集群搭建(笔记)

原文:https://www.cnblogs.com/alanpo1120/p/9161784.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!