上传的文件一般放在 /home/下
安装文件一般在 /usr/local/下
tar -xvzf zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11.tar.gz zookeeper
mv zookeeper /usr/local
vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin;
sourse /etc/profile //刷新文件
bin:运行命令
conf:配置文件
contri:附加功能
dist-maven:maven编译后的目录
docs:文档
lib:依赖的jar包
recipes:案例demo代码
src:源码
cd /usr/local/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
zoo.cfg参数说明:tickTime(时间单元)、initLimit(节点同步到master节点的连接时间)、syncLimit(master节点与从节点发消息请求和应答时间)、dataDir(必须配置)、dataLogDir(日志目录)、clientPort(连接服务器端口,默认2181)
cd /usr/local/zookeeper/bin
启动服务端:./zkServer.sh start
启动客户端:./zkCli.sh
启动客户端之后:
help:查看zk命令
ls:ls / (/代表根节点,/下的目录代表子节点)
ls2:ls /+状态信息(stat /)
get:get / 获得当前节点的数据
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,版本号加1,1代表最新版本号
delete /zkfk/seq0000000005 1:删除目录,版本号为1的目录
watcher:监督每个节点的操作,znode变化时触发,触发后立即销毁,父子节点增删改能够触发
stat /zkfk/one watch:创建时触发watch(父)
get /zkfk/one watch:get时设置,当修改、删除时触发watch(父)
ls /zkfk watch:创建、删除子节点时触发watch(子)
get /zkfk/one watch:修改时触发watch(子)
acl:权限控制,getAcl(获取节点权限信息),setAcl(设置节点权限信息),addauth(输入认证授权信息)
crdwa:create(创建子节点)、read、delete(删除子节点)、wirte、admin(设置权限)
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:健康信息
wchs:watch信息
4lw.commands.whitelist=*:开启所有四字命令,修改zookeeper/conf/zoo.cfg文件,加载最后一行,重启
wchc:watch节点
wchp:watch路径
master节点down机器,子节点会竞争,有一个子节点成为master节点,若开始的master节点恢复,则成为子节点
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端口(选举模式下选举端口)
cp zookeeper zookeeper02 -rf
cp zookeeper zookeeper03 -rf
1、准备三台服务器,为了区分zookeeper,分别命名为:zookeeper、zookeeper_c01、zookeeper_c02, ip分别为:
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都设置为2181,dataDir改为各自的目录,分别在各自dataDir对应的目录下创建myid文件夹,值分别为1、2、3
3、启动三台zookeeper服务,并客户端连接,在任意服务器创建、修改删除zNode都会同步到其他机器
4、查看主从节点:./zkServer.sh status
/**
*连接服务端
*@param zkServerPath:zk服务端地址端口,例如192.168.1.1:2181
*@param timeout:超时时间,例如5s:5000
*@param ZKConnectSessionWatcher:watcher
**/
Zookeeper zk = new Zookeeper(zkServerPath,timeout,new ZKConnectSessionWatcher());
/**
*会话重连(根据sessionId和sessionPasswod)
*前三个参数同上
*@param sessionId:zk.getSessionId()
*@param sessionPasswd:zk.getSessionpasswd()
**/
Zookeeper zk = new Zookeeper(connectZkPath,timeout,ZKConnectSessionWatcher(),
sessionId,sessionPasswd);
/**
*同步方式创建节点
*@param path:节点路径
*@param data:节点数据byte[]
*@param cals:权限, Ids.属性
*@param CreateMode:CreateMode.属性(临时节点、持久节点、顺序节点)
**/
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);
/**
*@param path :节点路径,如:/node
*@param data :节点数据byte[],如:”nodeData”.getBytes()
*@param version :版本号(相当于乐观锁,get / 后显示的dataVersion
* @return Stat :执行之后显示的信息,与get / 返回的信息一致
**/
Stat status = zk.setData(path,data,version);
异步与8.2类似
/**
*@param path :节点路径
*@param version : 版本号(相当于乐观锁,get / 后显示的dataVersion
**/
zk.delete(path,version);
异步与8.2类似,同步方式无返回值,建议使用异步方式
原文:https://www.cnblogs.com/alanpo1120/p/9161784.html