赞
踩
ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境
下面是JDK8的压缩包
链接:https://pan.baidu.com/s/1oeEFRXHNCB8uHOB1mc86EQ
提取码:64u0
下载好后,使用Xshell进行传递文件给虚拟机,主机就是ifconfig里面的ens33里面的IP地址,选择SFTP安全文件传输协议,端口号22,连接后会问你虚拟机的用户和密码,就是你虚拟机登录的用户名和密码,连接好后将上面下好的压缩包拖到黑色的命令行,就会自动帮你把文件传进去了
下面就是传输成功了,不使用拖文件的方式也可以直接输入命令
Uploading jdk-8u141-linux-x64.tar.gz to remote:/root/jdk-8u141-linux-x64.tar.gz
可以看到remote就是指的远程主机,后面的路径就是上传的路径
tar -zxf jdk-8u141-linux-x64.tar.gz
mv jdk1.8.0_141/ /usr/local/
解压压缩包,并移到/usr/local/用户的程序目录,配置环境
vim /etc/profile
修改配置为如下,关于export PATH那里的配置如果本来就有只需在后面加上:${JAVA_PATH}即可,注意前面有个冒号
export JAVA_HOME=/usr/local/jdk1.8.0_141
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${PATH}:${JAVA_PATH}
让配置文件生效,javac是测试jdk配置成功没有,没有成功记得检测版本号要和自己的jdk一致,因为版本号就是文件夹的名字
source /etc/profile
javac
出现如下则配置java环境成功
注意版本很重要,博主原先使用zookeeper-3.7.0版本,无法搭建成功
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz --no-check-certificate
tar -zxvf zookeeper-3.3.3.tar.gz
mv zookeeper-3.3.3 /opt/zookeeper
cd /opt/zookeeper
需要将conf目录下的zoo_sample.cfg名称修改为zoo.cfg
mv /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
vi /opt/zookeeper/conf/zoo.cfg
可以看到clientPort=2181,即zookeeper服务启动的端口为2181
以下命令可以看到命令台日志打印,不是后台运行
/opt/zookeeper/bin/zkServer.sh start
出现如下情况即是启动成功
使用zookeeper客户端连接服务器
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
出现如下,则是连接够从
在集群模式下至少部署三个zookeeper服务器,所以我们先复制zookeeper两次
cp -r /opt/zookeeper /opt/zookeeper1
cp -r /opt/zookeeper /opt/zookeeper2
修改三个zookeeper文件夹下的配置,其他配置不变
/opt/zookeeper/conf/zoo.cfg
vi /opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/tmp/zookeeper
clientPort=2181
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
/opt/zookeeper1/conf/zoo.cfg
vi /opt/zookeeper1/conf/zoo.cfg
tickTime=2000
dataDir=/tmp/zookeeper1
clientPort=2281
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
/opt/zookeeper2/conf/zoo.cfg
vi /opt/zookeeper2/conf/zoo.cfg
tickTime=2000
dataDir=/tmp/zookeeper2
clientPort=2381
server.1=127.0.0.1:2886:3886
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
修改完配置还需要创建myid文件,对应server.1、server.2、server.3配置,myid文件必须dataDir配置的目录下
mkdir /tmp/zookeeper
mkdir /tmp/zookeeper1
mkdir /tmp/zookeeper2
touch /tmp/zookeeper/myid
touch /tmp/zookeeper1/myid
touch /tmp/zookeeper2/myid
然后将myid文件内容分别改为1、2、3
vi /tmp/zookeeper/myid
vi /tmp/zookeeper1/myid
vi /tmp/zookeeper2/myid
使用netstat检查要开启的九个端口有没有被占用
netstat -anp | grep 2181
netstat -anp | grep 2281
netstat -anp | grep 2381
netstat -anp | grep 2886
netstat -anp | grep 3886
netstat -anp | grep 2888
netstat -anp | grep 3888
netstat -anp | grep 2889
netstat -anp | grep 3889
启动之前必须切换到root才有权限,或者赋权
chmod a+wxr /opt/zookeeper/
chmod a+wxr /opt/zookeeper1/
chmod a+wxr /opt/zookeeper2/
启动服务器
/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper1/bin/zkServer.sh start
/opt/zookeeper2/bin/zkServer.sh start
开启第三个服务器出现了如下问题,可以看到是/tmp/zookeeper2/myid文件里不是3,而是333,修改后就好了
使用如下命令将Zookeepr客户端连接集群
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2281,127.0.0.1:2381
出现如下界面则搭建成功
刚刚使用客户端成功连接了集群,现在我们来使用一下客户端
/znode1 是路径,可以通过路径可以访问到数据 “znode-persistent” ,注意,创建时路径和数据之间只能隔着一个空格,否则传入的数据就是空,使用get时是取不到的,后面的所有命令之间都只能有一个空格
create /znode1 "znode-persistent" #创建持久节点
create /znode2 "znode-temp" -e #创建临时节点,重启后数据消失
create /znode3 "znode-sequence" -s #创建顺序节点,会自动向路径填充10位序列号,序号是递增的
创建临时节点和顺序节点需要ACL权限,否则运行后zookeeper客户端会直接退出,可以使用
scheme:id :perm 来标识一个有效的ACL信息,分别对应权限模式(Scheme)、授权对象(ID)和权限(Permission)
create -e /znode2 "znode-temp" digest:user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=:cwrdaCreated /znode2
create -s /znode3 "znode-sequence" digest:user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=:cwrdaCreated /znode3
使用ls2 就可以看见我们创建的节点是否成功了
ls2 /
可以看到下面出现了我们刚刚创建的znode1、znode2、znode30000000018,这个znode30000000018每个人都可能不一样,因为是一个系统生成的递增的序列号
获取刚刚存入的znode节点中数据,
get /znode1
get /znode2
get /znode30000000018 #每个人可能不一样
出现了如下问题,原因是get 和 /znode1之间多了一个空格
stat /znode1
stat /znode2
stat /znode30000000018
出现如下信息
cZxid = 0x200000014 #zone节点的Id
ctime = Wed Feb 23 01:49:22 PST 2022 #节点创建时间
mZxid = 0x200000014 #zone节点修改后的id
mtime = Wed Feb 23 01:49:22 PST 2022 #节点修改时间
pZxid = 0x200000014 #子zone节点的id
cversion = 0 #节点所拥有的子节点被修改的版本号
dataVersion = 0 #当前节点数据的版本号
aclVersion = 0 #节点的ACL被修改的版本号
ephemeralOwner = 0x0 #如果节点为临时节点,那么它的值为这个节点拥有者的session ID,否则为0x0
dataLength = 18 #数据长度
numChildren = 0 #子节点个数
set /znode1 "znode-persistent-set"
set /znode2 "znode-temp-set"
set /znode30000000018 "znode-sequence-set"
查看是否修改成功
get /znode1
get /znode2
get /znode30000000018 #每个人可能不一样
get /znode1 -w
set /znode1 "znode-persistent-set"
出现如下情况则说明监视成功,每次添加监听器,只会监听一次事件,之后会失效
只需要在父路径下再加路径就可以创建子节点
create /znode1/znode-children1 "znode-children1"
create /znode1/znode-children2 "znode-children2"
create /znode1/znode-children3 "znode-children3"
列出znode的子节点
ls /znode1
delete /znode1/znode-children1
ls /znode1
出现如下情况则删除成功
ls
出现如下信息
stat path [watch] #查看路径节点状态,-w添加监视器 set path data [version] #修改已经存在的节点的数据 ls path [watch] #列出该路径下的子结点,path为/时列出所有节点 delquota [-n|-b] path #删除quota节点,删除/zookeeper/quota下的子结点 ls2 path [watch] #列出该路径下的子结点,path为/时列出所有节点,同时会显示一些状态信息 setAcl path acl #设置acl权限 setquota -n|-b val path #设置quota节点 所以path都保存在/zookeeper/quota下作为其子结点 history #查看最近使用的命令历史记录 redo cmdno #重复执行之前执行过的命令 cmdno是命令行显示的那个数字,表示第几条命令。最开始为0 printwatches on|off # on表示输出watch事件,off表示关闭输出watch事件 delete path [version] # 删除节点 sync path #强制客户端所连接的服务器与leader进行数据同步,这样在读取path的值就是最新的值 listquota path #列出quota节点,列出/zookeeper/quota下的子结点 get path [watch] #获取路径节点的数据,-w添加监视器 create [-s] [-e] path data acl #创建znode节点 -s有序 -e临时 path路径 data事件 acl权限 addauth scheme auth #添加认证用户 quit #退出连接 getAcl path #读取ACL权限 close #关闭连接 connect host:port #打开连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。